Я пытаюсь найти 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 ответ1

3

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .