Я работаю над проектом, который требует пакетной обработки большого количества файлов изображений. Чтобы все было проще, я написал сценарий, который создаст каталоги n
и переместит файлы m
на их основе на основе ввода пользователем.Скрипт оболочки для перемещения каталогов
Моя проблема заключается в том, чтобы теперь понять обход каталога через скрипт оболочки.
Я добавил этот фрагмент в конце сценария, описанного выше рода
dirlist=$(find $1 -mindepth 1 -maxdepth 1 -type d)
for dir in $dirlist
do
cd $dir
echo $dir
ls
done
Когда я запустил его в папку Pano2, whcih содержит две внутренние папки, я всегда получал ошибку
./dirTravel: line 9: cd: Pano2/05-15-2012-2: No such file or directory
Однако после этого я получаю список файлов из указанного каталога.
В чем причина предупреждения? Если я добавлю cd ../
после ls
, я получаю список папок внутри Pano2 /, но не файлы сами.
Если в ваших именах есть пробелы, ваше решение взорвется. Этот вопрос задается здесь 2-3 раза в неделю. Потратьте немного времени и найдите '[bash] find while' (не используйте для циклов). Удачи. – shellter
@shellter, имена папок программно генерируются скриптом и не имеют имен файлов. В то время как ваша точка была бы действительной в противном случае, она действительно не вступает в игру в этой ситуации. – Jason
@shelter - использование while предотвратит его взорвание, если в имени файла есть пробел, но нет, если в имени есть новая строка (которая действительна). – jordanm