Suchen und Kopieren von Dateien im Terminal

Suchen und Kopieren von Dateien im Terminal

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 xargsjede 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, finddie die erste Datei (im aktuellen Verzeichnis, rekursiv) mit diesem Namen finden und kopieren.

verwandte Informationen