Вопрос, который задают, является общим, а также важным, поэтому я хотел бы дать более общий ответ:
Простейший случай (безопасный в большинстве случаев и в Mac OS X, но читайте дальше):
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
Вам также нужно обрабатывать пробелы в именах файлов (любая ОС):
IFS=$'\n' ; for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
Вам необходимо безопасно обрабатывать имена файлов, которые отличаются только регистром в файловой системе с учетом регистра ине перезаписывать цель (например, Linux):
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done
Примечание о Mac OS X:
Файловая система Mac не чувствительна к регистру, сохраняет регистр.
Есть,тем не менее, нет необходимости создавать временные файлы, как предлагается в принятом ответе и комментариях, потому что два имени файла, которые отличаются только регистром, не могут существовать в первую очередь, ref .
Чтобы показать это:
$ mkdir test
$ cd test
$ touch X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 X
$ mv X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 x