linux-l: replace rekursiv

Steffen Solyga solyga at absinth.net
Di Apr 18 03:56:23 CEST 2000


Dear Jens Dreger, concerning your mail sent on Tuesday, 2000/04/18  2:01
let me reply the following:

> Aber warum denn das ? Dabei geht das doch auch in Perl so einfach:
> ----------------8<---------------------
> #!/usr/local/bin/perl -w
> 
> system(
>  'for i in `find . -type f`; do echo "Processing $i";
>   file $i | grep text > /dev/null 2>&1 && 
>   (echo $i; cp -p $i /tmp/file;
>      sed "s/alter string/neuer string/g" /tmp/file > $i;
>      touch -r /tmp/file $i; ); 
>   done; rm -f /tmp/file'
> )
> -------------------8<-------------------------

Stimmt! Perl ist doch ganz schön...
Man achte auf das -w, damit sich auch ja kein Fehler einschleicht. Guut!

> > Sieht doch abgefahren aus, oder?

> Stimmt. Hast Du das selbst aus der Keilschrift uebersetzt, oder war das
> babelfish ?

Sowas keimt in meinem kranken Gehirn, muß ab und zu mal rausgelassen werden.
Ohne Witz, inzwischen tippe ich das auf der Kommandozeile.

> Allerdings hat Deine Version den Vorteil, dass sie mit beliebig vielen
> Files klarkommt. Bei "perl -pi -e 's/blah/blub/g' <files>" ist
> natuerlich irgendwann Schluss, wenn die Kommandozeile ueberlaeuft...

Naja, irgendwann ist vielleicht die Platte voll. Ach, ganz vergessen:
Das geht natürlich nicht in der ekelhaften c-shell samt derivaten.
Bourne shell rules.

Hat das nun dem Fragenden geholfen??

-- 
-------------------------------------------
Steffen Solyga
mail: solyga at absinth.net
www : http://www-tet.ee.TU-Berlin.DE/solyga
-------------------------------------------



Mehr Informationen über die Mailingliste linux-l