
Ich habe eine TXT-Datei (mit dem Namen „list.txt“), die eine Liste von Dateinamen und deren Pfaden enthält. Zum Beispiel:
/Users/Me/Downloads/0001.pdf
/Users/Me/Downloads/0010.pdf
/Users/Me/Downloads/0053.pdf
usw.
Ich möchte, dass diese in einen Ordner auf meinem Desktop mit dem Namen „neuer Ordner“ kopiert werden. Dazu verwende ich dieses Skript im Terminal:
cp `cat /Users/Me/Desktop/list.txt` /Users/Me/Desktop/new-folder/
Und das funktioniert hervorragend!
Aber jetzt möchte ich diese Funktionalität erweitern.
Erstens funktioniert es nicht, wenn die Pfade Leerzeichen enthalten, was nicht sehr praktisch ist.
Zweitens bin ich mir bei den Pfaden nicht immer sicher. Ich möchte, dass Terminal in einem bestimmten Ordner und seinen Unterordnern nach der Datei mit dem Namen „0001.pdf“ sucht.
Meine Kenntnisse über Terminal beschränken sich im Wesentlichen auf dieses eine Skript, nur damit ihr Bescheid wisst.
Ich hoffe, jemand kann mir helfen, und vielen Dank im Voraus!
Antwort1
Sie können xargs
jede Zeile mit zitieren.
xargs -a list.txt -I% cp "%" destination/
Ihre zweite Anforderung ist nicht sehr praktisch, aber vorausgesetzt, dass es sich bei der Liste nur um eine Liste von Dateinamen handelt, könnte etwa Folgendes funktionieren:
xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit
Es werden aufeinanderfolgende Zeilen übergeben, find
die die erste Datei (im aktuellen Verzeichnis, rekursiv) mit diesem Namen finden und kopieren.