Я уже прочитал и попробовал много ответов здесь, как переименовать файлы с пробелами во вложенной структуре каталогов. Однако они, похоже, не работают для моей ситуации. Они все segfault.Переименовать файлы с пространством с очень большой структурой каталогов
У меня всего лишь 100 000 файлов в структуре каталогов из 32 768 каталогов. Это также в Windows (Server 2008 R2), и я запускаю MINGW32, давая мне Bash 3.1.
Каталоги находятся в такой структуре, как 00/00/file1 01/00/file2, где каждый подкаталог «серия» изменяется от 00 до zz. Я считаю, что структура каталогов идет только на 2 уровня, но я могу ошибаться. Генерация количества файлов из «свойств» проводника Windows занимает около 45 минут.
Я думаю, что опубликованные ответы здесь являются segfault, потому что у них заканчивается память или идет по этим каталогам. Это моя последняя попытка, прежде чем отправлять сюда:
find . -maxdepth -1 -mindepth 1 -type -d -printf '%p\n' |
while IFS= read -r g; do
find "$g" -depth -name '* *' | while IFS= read -r f ; do
mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr ' ' _)
done
done
Моя последняя попытка пытается ходить в по крайней мере подкаталогах первого уровня, а затем использовать это решение от другого поста на эту тему:
find . -depth -name '* *' | while IFS= read -r f ; do
mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr ' ' _)
done
Где вы может видеть, что моя версия - это просто ответ на другой пост, встроенный во внешний цикл поиска. Однако это также противоречит. Я подумал попробовать это, потому что пытался использовать вышеупомянутое решение, когда работал один уровень каталогов.
две вещи 1), пожалуйста, не включают в себя теги в названии - это то, что теги для и 2) используйте код '{}', вариант форматирования кода. –
попробуйте записать результаты 'find' в файл, затем используйте' split -l', чтобы разбить проблему на более мелкие задачи, а затем перебрать содержимое разделенных файлов. – Victory
Почему BASH и MinGW? Кажется, вы создаете гору из задачи, которая очень проста. Используйте Python или Java или язык _real_, который не имеет проблем с пробелами. –