Wie finde und kopiere ich Dateien mit Leerzeichen?

Wie finde und kopiere ich Dateien mit Leerzeichen?

Ich versuche, mp3Dateien in beliebigen Unterverzeichnissen zu finden und diese beispielsweise in das aktuelle Verzeichnis zu kopieren. Hier ist der Befehl, den ich ausprobiert habe:

find . -name *.mp3  -ls | gawk '{printf("cp %s .\n", $11);}'

Der findBefehl listet alle Dateien korrekt auf, gawkscheint aber Probleme damit zu haben. Der findBefehl listet beispielsweise die folgende Datei auf

8132326 7392 -rw-r--r--   1 alexander alexander  7566180 Nov 27 20:22 ./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3

während der Befehl die Zeichenfolge gawksieht$11

./For

anstatt

./For\ The\ Kids\ EP\ [12_\ Vinyl\ EP\ -\ DP003]/01\ A1\ For\ the\ Kids.mp3

Warum ist das so? Und wie geht man richtig damit um (mit oder ohne gawk)?

Antwort1

Der richtige Befehl ist

 find /folder/to/be/searched -type f -name '*.mp3' -exec cp "{}" /target/folder \;

Es ist einfacher und daher besteht weniger Fehlergefahr. Einziges Manko: Denken Sie daran, absolute Pfade zu verwenden, keine relativen.

verwandte Informationen