Você obtém renomear os nomes dos diretórios porque o comando find retorna o caminho completo dos nomes dos arquivos e o comando renomear fez a renomeação também base no nome do diretório. Portanto, se você tiver um arquivo no diretório DIR1/FILE , ele será renomeado para dir1/file enquanto você não quiser renomear o diretório.
Aqui está o comando para renomear apenas o nome dos arquivos:
find . -type f -exec rename -n 's:([^/]*$):lc($1):e' {} +
No comando acima, ([^/]*$) corresponde apenas à última parte do caminho que não contém / dentro de um par de parênteses (...) , o que torna a parte correspondida como um grupo de correspondências. Em seguida, traduza a parte correspondente ( $1 é o índice do primeiro grupo correspondente) para minúsculas com a função lc() .
No momento, você precisa montar a opção -n para renomear os arquivos reais.
-exec ... {} +is for commands that can take more than one file at a time (egcat,stat,ls). The files found byfindare chained together like anxargscommand. This means less forking out and for small operations, can mean a substantial speedup. [answer by @Oli]