Ich versuche, mp3
Dateien 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 find
Befehl listet alle Dateien korrekt auf, gawk
scheint aber Probleme damit zu haben. Der find
Befehl 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 gawk
sieht$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.