Большинство ответов выше опасны, потому что они не имеют дело с именами, содержащими нечетные символы. Ваша самая безопасная ставка для такого рода вещей - использовать опцию find -print0, которая завершит имена файлов ascii NUL вместо \ n. Здесь я представляю этот скрипт, который изменяет только файлы, а не имена каталогов, чтобы не перепутать find.
find . -type f -print0 | xargs -0n 1 bash -c \
's=$(dirname "$0")/$(basename "$0");
d=$(dirname "$0")/$(basename "$0"|tr "[A-Z]" "[a-z]"); mv -f "$s" "$d"'
Я протестировал его, и он работает с именами файлов, содержащими пробелы, всевозможные кавычки и т. Д. Это важно, потому что, если вы запускаете от имени root один из тех других скриптов в дереве, который включает файл, созданный:
touch \;\ echo\ hacker::0:0:hacker:\$\'\057\'root:\$\'\057\'bin\$\'\057\'bash
... ну угадай, что ...