Bash: Kopieren Sie eine Liste von Dateien, die (viele) Sonderzeichen enthalten

Bash: Kopieren Sie eine Liste von Dateien, die (viele) Sonderzeichen enthalten

Ich weiß genau, wie man mit Bash einfach eine Liste von Dateien an einen anderen Ort kopiert, aber das Problem ist, dass meine Dateiliste Dateinamen enthält, die so ziemlich JEDES Zeichen enthalten, das in Bash maskiert werden muss. Es gibt Unmengen von Leerzeichen, !, ",", "'", ? und so ziemlich jedes andere Zeichen, das Ihnen einfällt und maskiert werden muss.

Ich habe zunächst versucht, die Textdatei durchzugehen und alle diese Zeichen zu maskieren, aber es ist ... anstrengend, selbst mit Suchen und Ersetzen (das funktioniert jedoch) (ich habe es mit einer viel kleineren Liste von Dateien getestet.) Ich habe auch versucht, in der Textdatei vor und nach dem Pfad einfache Anführungszeichen einzufügen, aber das funktioniert nicht. Ich habe auch versucht, vor und nach dem % nach cp einfache Anführungszeichen einzufügen, aber offensichtlich habe ich keine Ahnung, was ich tue. :) (Ich weiß, dass ich einfache Anführungszeichen in der Textdatei maskieren müsste, wenn ich den Dateipfad irgendwie mit einfachen Anführungszeichen umgeben würde.)

Ich verwende diesen Befehl, um die Dateiliste an einen anderen Ort zu kopieren, aber auch dieser funktioniert nicht mit Sonderzeichen.

cat file.txt | xargs -J % cp % ./folderToMoveto/

Ich weiß, dass es andere Befehle gibt, die dasselbe tun, ohne dass etwas in xargs weitergeleitet werden muss, und in einigen Antworten hier heißt es, dass xargs dies selbst tun kann, aber ich habe diese nicht zum Laufen gebracht, während der obige Befehl funktioniert.

Außerdem verwende ich OS X.

Antwort1

GNU xargs verfügt über eine -0Option, die das Lesen von durch Nullbytes getrennten Daten ermöglicht. Unter Linux können Sie Folgendes tun:

tr '\n' '\0' < file.txt | xargs -0 cp -t /folder/to/move/to

Leider hat Apple die alte Darwin-Manpages-Site offline genommen, daher kann ich nicht prüfen, ob es ein MacOS-Äquivalent gibt.

verwandte Informationen