[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: