Я пытаюсь найти 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 \;
Это проще, поэтому меньше шансов на ошибки. Единственное: не забудьте использовать абсолютные пути, а не относительные.