Ich habe eine Datei, die Dateinamen enthält. Beispielsweise:
/tmp/list.txt
(Es steht mit den Leerzeichen am Anfang jeder Zeile):
/tmp/file.log
/app/nir/home.txt
/etc/config.cust
Ich möchte, eine Zeile verwenden, um alle die Dateien zu verschieben aufgeführt in /tmp/list.txt
zu/app/dest
Also sollte es ungefähr so sein:
cat /tmp/list.txt | xargs mv /app/dest/
Angenommen, Ihre Dateinamen sind relativ vernünftig (keine Zeilenumbrüche oder seltsamen Zeichen):
Umgang mit seltsamen Dateinamen (Unterbrechungen, wenn ein Dateiname eine neue Zeile enthält):
quelle
cp -Hr
aber ich weiß nicht, ob OSX diescp
unterstützt.quelle
Reine Xargs, die direkt aus der Datei lesen
edit 1 - nach @Anthons Kommentar unten,
quelle
-i
ist abgeschrieben, und es, oder es Ersatz -Ich impliziere-l
/--max-lines=1
. Und es wirdmv
für jede Datei separat ausgeführt.(Leerzeichen am Start werden ignoriert)
quelle