Я знаю, что это было спрошено, но то, что я нашел, пока не сработало.
В шкафу я пришел: rename -n 'y[A-Z]/[a-z]/' *
который работает для текущего каталога. Я не слишком хорошо разбираюсь в терминале Linux, так что
я должен добавить к этой команде, чтобы применить ее ко всем файлам во всех подкаталогах, из которых я есть, спасибо!
Изменение имен файлов в нижнем регистре в Ubuntu во всех подкаталогах
Ответ 1
Здесь один из способов: find
и tr
:
for i in $(find . -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done
Изменить; добавлено: -name "*[A-Z]*"
Это гарантирует, что будут найдены только файлы с заглавными буквами. Например, если файлы с только строчными буквами найдены и перемещены в один и тот же файл, mv
отобразит ошибку are the same file
.
Ответ 2
Perl имеет функцию lc()
, поддерживающую локаль, которая может работать лучше:
find . -type f | perl -n -e 'chomp; system("mv", $_, lc($_))'
Обратите внимание, что этот script обрабатывает пробелы в именах файлов, но не символы новой строки. И нет никакой защиты от столкновений, если у вас есть "ASDF.txt" и "asdf.txt", каждый будет сбиваться.