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