PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Liste von Dateien löschen



neptunus
15.04.06, 19:13
Hallo,

angenommen, ich habe unter Linux eine Datei, welche eine Liste von Dateien im Dateisystem enthält, ist es dann irgendwie möglich, diese Datei an das Programm rm zu übergeben, sodass alle in der Datei aufgezählten Dateien gelöscht werden?

Die Datei mit den Auflistungen wäre zB diese (filelist.txt):

/tmp/a.txt
/tmp/b.txt


Kann man den Inhalt dieser Datei filelist.txt irgendwie zum Kommando rm pipen oder Sonstiges, sodass die Dateien a.txt und b.txt gelöscht werden?

Ich habe es bereits mit Befehlen wie rm <a.txt gelöscht, es hat aber leider nicht funktioniert.

Danke & lg,
Neptunus

BSM
15.04.06, 19:18
rm $(cat DATEILIST | xargs)

neptunus
15.04.06, 19:31
Vielen Dank,

eine Frage hätte ich aber noch :-)

Bedeutet das $(....) dass die Anweisung darin ausgeführt wird, und das Ergebnis dann an das vorhergehende Kommando angehängt wird (in diesem Fall rm)?

3qualizer
15.04.06, 19:58
Interessante nicht-Nutzung von xargs ;)

ich hätte entweder

cat DATEILISTE | xargs rm
oder

rm $(DATEILISTE)
gesagt. Wobei beide Zeilen spätestens bei Dateien mit Leerzeichen Probleme haben werden. Schon etwas besser ist da

cat DATEILISTE | while read datei; do rm "$datei"; done

BSM
15.04.06, 20:56
Bedeutet das $(....) dass die Anweisung darin ausgeführt wird, und das Ergebnis dann an das vorhergehende Kommando angehängt wird (in diesem Fall rm)?
Jepp, das kann man auch durch zwei Akzent abkürzen: `kommando`

Hab xargs irgendwo mal so aufgeschnappt und nie anders benutzt, aber stimmt schon :D

Die Letzte Methode ohne xargs ist sowieso am besten, schon weil xargs nicht zum Standard gehört.

Gruß Robert

hp_tux
15.04.06, 21:17
Hallo,


schon weil xargs nicht zum Standard gehört.
ähm, wie ist das gemeint?

Gruß

hp_tux

BSM
15.04.06, 21:52
Ich war der Meinung, dass die findutils nicht unbedingt zur Minimalausrüstung gehören, andererseits ist da auch find drin, also vergiss das letzte. Danke.