Наконец-то я почти нашел относительно адекватное решение старого вопроса: как в цикле правильно перебрать имена файлов, полученных от команды find, причем в именах файлов могут встречаться пробелы?
Решение такое:
find -name \*.mp3 -or -name \*.MP3 -or -name \*.Mp3 -or -name \*.ogg -print0 | while IFS= read -r -d '' file;
do
echo "Processing ${file}"
done
Однако есть проблема. Если в заданном каталоге вручную в консоли вызвать одну команду find, то она, как и положено, найдет все мои ~300 файлов:
find -name \*.mp3 -or -name \*.MP3 -or -name \*.Mp3 -or -name \*.ogg
./Last love jam.mp3
./WindJam/Minus 4.mp3
./WindJam/Minus 3.mp3
./WindJam/Minus 2.mp3
./WindJam/Minus 1.mp3
./Thrash-electronics JAM.mp3
... 300 файлов ...
Если же в этом же каталоге запустить полный вышеуказанный скрипт, то он найдет только *.ogg файлы.
Почему так? Что в скрипте еще надо исправить, что бы обрабатывались все файлы?