Я пытаюсь создать цикл for в папках, содержащих пробелы, запятую и скобки. Например: Italy - Rimini (Feb 09, 2013)
bash for loop в каталогах с символами
Сначала он сканирует родительскую папку/альбомы для подпапок, которые выглядят как в приведенном выше примере. Затем он выполняет завихренные действия над файлами в подпапках. Он отлично работает, если вложенные папки не содержат пробелов, запятых или других символов.
for dir in `ls /albums`;
do
for file in /albums/$dir/*
do
curl http://upload.com/up.php -F uploadfile[][email protected]"$file" > out.txt
php process.php
done
php match.php
done
Но если есть такие символы, кажется, скручивание немного застревает - он не может найти $ файл (возможно, потому, что $ реж неверно).
Я могу заменить все символы в подразделах или удалить их или переименовать папки в 001, 002, и он работает безупречно. Но прежде чем прибегать к этому, я хотел бы знать, можно ли его решить, используя трюки bash, сохраняя неподходящее имя подпапки?
читать о 'find -print0 | xargs ... 'здесь, в StackOverflow. 100 примеров. Удачи. – shellter
Нехорошо перебирать вывод 'ls', так как имя файла может содержать такие забавные символы, как' \ n'. – mtk