grep: a.txt
: Keine solche Datei oder Verzeichnis
grep: b
: Keine solche Datei oder Verzeichnis
entfernt alle im Verzeichnis vorhandenen Dateien außer., ... Es sollte nur die Dateien entfernen, die das Wort "magenta" enthalten.
Auch versucht grep magenta * -exec rm '{}' \;
, aber kein Glück.
Irgendeine Idee?
Verwenden Sie xargs
:
Der Zweck von xargs besteht darin, eine Eingabe in stdin zu nehmen und sie in die Befehlszeile seines Arguments einzufügen.
Was die Optionen tun:
Die Option -l
weist grep an, den übereinstimmenden Text nicht zu drucken und stattdessen nur die Namen der Dateien auszudrucken, die übereinstimmenden Text enthalten.
Die Option --null
weist grep an, die Dateinamen mit NUL-Zeichen zu trennen. Dies ermöglicht es, alle Manor des Dateinamens sicher zu behandeln.
Die -0
-Option für xargs, um ihre Eingabe als NUL-separiert zu behandeln.
-l
druckt Dateinamen von Dateien, die dem Suchmuster entsprechen. -r
führt eine rekursive Suche nach dem Muster magenta
im angegebenen Verzeichnis .
durch.
Wenn dies nicht funktioniert, versuchen Sie -R
.
(d. h. als mehrere Namen anstelle von einem). xargs -0
füttert die Dateinamen von grep
bis rm -f
--
wird oft vergessen, aber es ist sehr wichtig, das Ende von Optionen zu markieren und das Entfernen von Dateien zu erlauben, deren Namen mit -
. Wenn Sie sehen möchten, welche Dateien gelöscht werden sollen, entfernen Sie einfach | xargs -0 rm -f --
part.