Re: script gesucht
Am Sonntag, 24. Oktober 2004 13:41 schrieb Andreas Pakulat:
> On 24.Oct 2004 - 10:49:20, Matthias Houdek wrote:
> > Am Samstag, 23. Oktober 2004 17:33 schrieb Andreas Pakulat:
> > > On 23.Oct 2004 - 16:14:29, Matthias Houdek wrote:
> > > Ausserdem sollen auch
> > > Unterverzeichnisse bearbeitet werden und spaetestens dann wirds
> > > komplizierter als mit find und perl. Ausserdem wird nichts
> > > geloescht, sondern $user erhaelt eine Kopie jeder Datei. Das heisst
> > > am Ende braeuchte man auch noch ein "mv". Damit wird das ganze
> > > genauso langsam (mindestens) wie die find-perl Kombi...
> >
> > cd <dir>; for datei in * ; do tail +2 "$datei" | cat - > "$datei";
> > done
>
> Hast du das getestet? Das klappt naemlich nicht. Dabei wird eine leere
> Datei erzeugt!
Klappt bei mir wunderbar. Hab's gerade noch mal in die Kommandozeile
kopiert - und es klappte wieder.
Natürlich habe ich nur Text-Dateien in <dir>, aber die auch mit abartigen
Dateinamen. Klappt trotzdem.
> Man sollte die Skripte die man hier postet auch mal
> selbst austesten.
Gut. Schreiben wir es mal Zeilenweise:
--------------
cd <dir> # das Folgende sollte direkt im Verzeichnis
# ausgeführt werden
for datei in * ; do # Für jede Datei in diesem Verzeichnis mache...
# ... folgendes:
# 'tail +2 <dateiname>' schreibt die Datei <dateiname> ab der 2. Zeile in
# die Standardausgabe. Die Variable $datei wurde dabei in " gesetzt, um
# auch Dateinamen mit Leerzeichen zu erfassen.
# Die Standardausgabe wird mittels Pipe ( | ) in die Standardeingabe des
# cat-Befehls weitergeleitet. Mittels "-" liest cat aus der
# Standardeingabe und schreibt das ankommende in die Datei in $datei.
tail +2 "$datei" | cat - > "$datei"
# Und das abschließende "done" nicht vergessen ;-)
done
----------------
Die Manpages von tail und cat sind übrigens um ein vielfaches kürzer als
die Doku von Perl ;-)
BTW: Der Umweg über die Pipe und cat ist nötig.
Ein direktes 'tail +2 "$datei" > "$datei" erzeugt in der Tat eine leere
Datei.
> > > > Geht alles mit Shell-Mitteln. Kann man auch genau so gut mit find
> > > > verbinden.
> > >
> > > Man kann schon, aber IMHO ist gerade diese Anwendung ein Beispiel
> > > dafuer das es manchmal besser ist andere Tools als die Shell zu
> > > nutzen...
> >
> > Ich gehe mal davon aus, dass Mario Null Ahnung von Programmierung
> > unter Linux hat(te). Da ich diese Liste vorrangig als Hilfe zur
> > Selbsthilfe sehe, finde ich ein relativ leicht nachvollziehbares
> > Beispiel wesentlich besser geeignet.
>
> Die Variante mit find und perl wurde ausfuehrlichst dokumentiert, da
... und funktioniert offensichtlich nicht.
> sehe ich bei deiner Variante deutlich mehr Probleme das zu verstehen,
> wenn derjenige wirklich keine Ahnung hat (manpages von find, cat und
> tail lesen...)
Aha.
--
Gruß
MaxX
Hinweis: PMs an diese Adresse werden automatisch vernichtet (Filter
nach /dev/null).
Reply to: