Ich versuche, die grep
Ausgabe an zu leiten rm
, aber es gibt nutzloses Material aus. Ist ein Schalter erforderlich für rm
? Oder kann rm
direkt ein regulärer Ausdruck bereitgestellt werden?
ls | grep '^\[Daruchini'| rm
rm: fehlender Operand Weitere Informationen finden Sie in `rm --help '.
Antworten:
Sie müssen verwenden
xargs
, um die Standardeingabe in Argumente für zu verwandelnrm
.(Achten Sie auf Sonderzeichen in Dateinamen. Bei GNU grep ist dies möglicherweise besser
)
Auch wenn die Shell keine regulären Ausdrücke verwendet, ist dies ein einfaches Muster:
(In der Zwischenzeit denke ich, dass ich mehr Schlaf brauche.)
quelle
rm Dar*
, nichtrm !(Dar*)
.zsh
^
Modus fest (ähnlich wie dasbasg
!
Ding).| tr "\n" "\0"
vor demxargs
Bit hinzufügen . Gesehen in diesem Beitrag: stackoverflow.com/questions/20307299/…Analysieren Sie nicht die Ausgabe von
ls
.Hier ist es sehr einfach, die Shell dazu zu bringen, die gewünschten Dateien zu filtern. Beachten Sie, dass es die Shell ist, die das Muster erweitert
Dar*
, nicht derrm
Befehl. Die von der Shell ausgeführte Mustererweiterung wird als Globbing bezeichnet .In komplexeren Fällen schlagen Sie den
find
Befehl nach.quelle
Wenn Sie die Ausgabe
grep
von Zeilenumbrüchen anstelle von Leerzeichen eingrenzen möchten , können Sie diesxargs
über die-d
Option festlegen .(wie in dieser Frage beschrieben)
quelle
Um die Ausgabe als Argument weiterzugeben, verwende ich normalerweise eine while-Schleife, da ich mit xargs nicht vertraut bin.
quelle
Der beste Befehl für mich ist:
quelle