Как изменить регистр имен файлов рекурсивно? - PullRequest
1 голос
/ 27 ноября 2011

Мне нужно установить регистр всех файлов в нижний регистр:

directory11
       subdirectory11
             subdirectory21
                 File1
                 File2
                 ...
                 Filen
directory21
       subdirectory21
             subdirectory21
                 File1
                 File2
                 ...
                 Filen
..............................................


directory11
       subdirectory11
             subdirectory21
                 file1
                 file2
                 ...
                 filen
directory21
       subdirectory21
             subdirectory21
                 file1
                 file2
                 ...
                 filen
..............................................

Возможно ли это с помощью команды linux? Спасибо.

Ответы [ 3 ]

1 голос
/ 27 ноября 2011

Вы можете сделать:

rename 'y/A-Z/a-z/' *
1 голос
/ 27 ноября 2011

Один из многих возможных вариантов использования tr для изменения регистра. Найдите все файлы, используя find в каталоге. Создайте верхнюю строку имени файла, используя tr и используйте mv для переименования. Что-то в этих строках:

while read OLD_FILENAME
do
    NEW_FILENAME=`echo "$OLD_FILENAME"|tr [:upper:] [:lower:]`
    mv -v "$OLD_FILENAME" "$NEW_FILENAME"
done < <(find directory_name -type f)

Или, если вы хотите интерактивный режим для mv, т.е. запросить подтверждение замены, используйте что-то в следующих строках:

(
IFS=$'\n'
for OLD_FILENAME in $(find directory_name -type f)
do
   NEW_FILENAME=`echo "$OLD_FILENAME"|tr [:upper:] [:lower:]`
   mv -vi "$OLD_FILENAME" "$NEW_FILENAME"
done
)

Надеюсь, это поможет!

1 голос
/ 27 ноября 2011

Вы должны рассмотреть возможность использования rename(1) команды:

rename 'y/A-Z/a-z/' **

** означает рекурсивный, если вы используете настройку bash4 и globstar:

shopt -s globstar

Кроме того, этоверсия Perl renameЕсли вы наберете

file $(readlink -f $(type -p rename))

и увидите ELF, вы ошиблись, см. prename

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...