On Wed, Mar 06, 2002 at 09:39:53PM +0100, Torsten Werner wrote:
Hallo Thomas,
Am Mittwoch, dem 06. März 2002 um 19:42:43, schrieb Thomas Guettler:
find . | grep foo | xargs -iXX echo XX
Mir ist nicht ganz klar, was der Unterschied zu
find | grep foo
ist. Vielleicht erklärst du ein bisschen, was du eigentlich machen willst. Bestimmt gibt es ein perl-Einzeiler dafür! ;-)
Im Moment ist es für mich ein theoretisches Problem:
Normalerweise arbeite ich mit "rm `find . | grep foo`" um z.B. alle Dateien zu löschen die "foo" enthalten. Meine Dateien enthalten keine Sonderzeichen. Aber was, wenn doch Sonderzeichen drin sind?
Das ganze soll mit normalen Shell Möglichkeien (Bash) funktionieren.
Bei Dateien wie in folgendem Verzeichnis fliegen einem die meisten Shell Script um die Ohren:
--guettli@sonne:~/tmp$ ls -l total 0 -rw-r--r-- 1 guettli guettli 0 Mar 6 23:00 a $ B -rw-r--r-- 1 guettli guettli 0 Feb 27 08:39 a ' b -rw-r--r-- 1 guettli guettli 0 Feb 27 08:39 a * b -rw-r--r-- 1 guettli guettli 0 Feb 27 08:39 a b
Hier eine Lösungsvariante
--guettli@sonne:~/tmp$ find . | grep a | sed "s/'/\'/" | xargs -iXX echo 'XX' ./a b ./a ' b ./a * b ./a $ B
Will man z.B. rekursiv alle Dateien löschen die foo enthalten muss "a" durch "foo" und "echo" durch "rm" ersetzen. Der sed-Teil ist nötig, falls eine Datei ein ' (Einfaches Hochkomma) enthält.
Alternativen wären interessant.
thomas