LINUX.ORG.RU

Переименовать файлы, большие буквы в маленькие


0

0

Есть директория с больше 100 файлов вразнобой названными большими/маленькими буквами. Имена файлов только латинскими буквами.

Нужно переименовать файлы так, что-бы у всех было название только из маленьких букв.

anonymous

for i in `find <путь> -type f`
do
new_name = cat $i | tr "[A-Z]" "[a-z]"
mv $i $new_name
done

Или как то так. Только в начале рекомендуется проверить,
 заменив mv на то же echo $new_name

marsijanin ★★
()
Ответ на: комментарий от sdio

Или так для любого алфавита
rename -n 's/^(.*)$/\L$1/' *

sdio ★★★★★
()
Ответ на: комментарий от annoynimous

> for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done

Рискованный совет, т.к. не сказано, что в имени нет пробелов. Топикстартеру повезло?..

$ ls -1
A B C
asd zxv
$ for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done
mv: target `c' is not a directory
mv: target `zxv' is not a directory


2sdio: откуда взять такой модный rename? У меня rename -n не работает.
$ rename --help
call: rename from to files...
$ rename --version
rename (util-linux-ng 2.13.1.1)

alexsaa
()
Ответ на: комментарий от alexsaa

$ ls -l /usr/bin/rename 
lrwxrwxrwx 1 root root 24 2007-01-06 11:55 /usr/bin/rename -> /etc/alternatives/rename

$ ls -l /etc/alternatives/rename
lrwxrwxrwx 1 root root 16 2008-04-27 17:05 /etc/alternatives/rename -> /usr/bin/prename

$ dpkg -S /usr/bin/prename 
perl: /usr/bin/prename

prename из пакета perl

sdio ★★★★★
()
Ответ на: комментарий от alexsaa

>> for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done

>Рискованный совет, т.к. не сказано, что в имени нет пробелов. Топикстартеру повезло?..

А ещё не повезло бы, если бы файлы назывались, к примеру, по-русски в кодировке utf-8. Есть мнение что "tr" с ними бы не смог работать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.