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

Я пытаюсь найти 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 \;

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

Другие вопросы по тегам