Как найти и скопировать файлы с пробелами?

Как найти и скопировать файлы с пробелами?

Я пытаюсь найти mp3файлы в любых подкаталогах и скопировать их, например, в текущий каталог. Вот команда, которую я попробовал:

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

Команда findвыводит список всех файлов, правильно экранированных, но, gawkпохоже, с этим есть проблемы. findКоманда выводит список, например, следующего файла

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

в то время как gawkкоманда видит как $11строку

./For

вместо

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

Почему так? И как с этим правильно обращаться (с или без gawk)?

решение1

Правильная команда:

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

Это проще, поэтому меньше шансов на ошибки. Единственное: не забудьте использовать абсолютные пути, а не относительные.

Связанный контент