Ich habe eine Textdatei, die eine Liste von Pfaden zu verschiedenen Dateien enthält. Gibt es einen Befehl, mit dem ich jede Zeile durchlaufen und die Datei unter dem angegebenen Pfad löschen kann?
command-line
files
daka
quelle
quelle
cat
nicht erforderlich, können Siestdin
Umleitung verwenden:< file xargs rm
cat file
" in (ba) sh oder csh eingeben.cat
ist ungewöhnlich, wie gerade gesagt, nutzen Sie ausstdin
! Schauen Sie sich seine aktualisierte Antwort anHier ist eine Möglichkeit, mit Dateinamen mit Leerzeichen, Backslashes und anderen seltsamen Zeichen umzugehen:
Damit wird jede Zeile von gelesen
list.txt
, gespeichert$file
und ausgeführtrm
. Das-r
stellt sicher, dass Backslashes wörtlich gelesen werden (so dass\t
a\
und at
und nicht ein TAB übereinstimmen ). Das--
stellt sicher, dass es sich auch um Dateinamen handelt, die mit beginnen-
.Sie können dies auch in Perl tun:
Dieser liest jeden Dateinamen in den
%k
Hash ein undunlink
löscht dann jeden von ihnen.quelle
Durch Python.
Speichern Sie das obige Skript in einer Datei mit dem Namen "like"
script.py
und führen Sie das Skript aus, indem Sie den folgenden Befehl auf dem Terminal ausführen.file
ist eine Eingabedatei, in der der Pfad der Dateien gespeichert ist, die Sie tatsächlich entfernen möchten.quelle
Dumm, aber hier ist einer:
quelle
Ein anderer Weg dies zu tun:
Sie können die Datei vorbereiten, indem Sie sie zu einem Shell-Skript machen:
Wenn Ihre Dateinamen möglicherweise ein einfaches Anführungszeichen (
'
) enthalten, können Sie diese leicht erweiterte Version verwenden, um sie zuerst zu maskieren:Und Sie können dies ausführen, indem Sie es weiterleiten an
sh
:quelle
Soweit ich weiß, haben Sie eine Textdatei mit den Dateien mit den vollständigen Pfaden. Es gibt zwei Möglichkeiten:
In Ihrer Liste sind die Dateinamen durch Zeilenumbrüche getrennt, dh jede Zeile enthält den vollständigen Pfad zu einer Datei. In diesem Fall: Hier ist ein einfacher Ausweg:
Wenn Ihre Liste eine oder mehrere Zeilen mit Dateinamen enthält, die durch Leerzeichen oder Tabulatoren getrennt sind, finden Sie hier den Drill:
Dadurch werden alle Leerzeichen in Zeilenumbrüche umgewandelt
Ja, es gibt viele Möglichkeiten, dies zu erreichen, aber dies ist ein sehr einfacher Ansatz.
quelle