Wie führe ich einen Befehl für eine Liste von Dateinamen in einer Datei aus?
11
Ich habe die Namen der Dateien aufgelistet, die in eine Datei gelöscht werden sollen. Wie kann ich die Datei an den rmBefehl übergeben, damit sie einzeln gelöscht wird?
Die Dateiliste wird als Eingabe für den trBefehl angegeben, der das Dateitrennzeichen vom Zeilenvorschub in das Nullbyte ändert. Der xargsBefehl liest bei der Eingabe durch Nullbytes getrennte Dateien und startet den Befehl rm mit den als Argumente angehängten Dateien.
Ich würde auch vorschlagen, rm --statt nur zu verwenden rm, damit Dateinamen, die mit einem Bindestrich beginnen, nicht als rmParameter behandelt werden.
Artyom
Es hat nicht funktioniert Kumpel ........ tr: extra Operand monu.txt' Try tr --help 'für weitere Informationen. rm: fehlender Operand Versuchen Sie `rm --help 'für weitere Informationen. ........ Das ist alles was ich sehen kann
monu
1
Haben Sie vielleicht das <vor dem Dateinamen verpasst?
Jonas Berlin
Ich habe den Befehl xargs ebenfalls ein wenig verbessert - hinzugefügt - gemäß dem Vorschlag von @artyom und -r hinzugefügt, um sicherzustellen, dass rm nicht ausgeführt wird, wenn keine zu entfernenden Dateien vorhanden sind.
Jonas Berlin
5
Die obige Antwort ist insofern in Ordnung, als es sehr schwierig ist, Dateinamen mit Leerzeichen und "seltsamen Zeichen" zu behandeln. Aber der einfachste Weg, wenn die Dateinamen vernünftig sind, ist nur (Warnung, Bashismus!):
Antworten:
Wenn Sie eine Datei pro Zeile haben, können Sie dies folgendermaßen tun:
Die Dateiliste wird als Eingabe für den
tr
Befehl angegeben, der das Dateitrennzeichen vom Zeilenvorschub in das Nullbyte ändert. Derxargs
Befehl liest bei der Eingabe durch Nullbytes getrennte Dateien und startet den Befehl rm mit den als Argumente angehängten Dateien.quelle
rm --
statt nur zu verwendenrm
, damit Dateinamen, die mit einem Bindestrich beginnen, nicht alsrm
Parameter behandelt werden.monu.txt' Try
tr --help 'für weitere Informationen. rm: fehlender Operand Versuchen Sie `rm --help 'für weitere Informationen. ........ Das ist alles was ich sehen kannDie obige Antwort ist insofern in Ordnung, als es sehr schwierig ist, Dateinamen mit Leerzeichen und "seltsamen Zeichen" zu behandeln. Aber der einfachste Weg, wenn die Dateinamen vernünftig sind, ist nur (Warnung, Bashismus!):
Für reguläre Shell:
quelle