Esse é o rename
baseado em Perl encontrado no Debian, Ubuntu e derivados, a julgar pela sintaxe. Você não pode usar o tr
operator porque ele age em toda a string. Mas você pode associar a extensão e em minúsculas com \L
.
rename 's/\.[^.]*$/\L$&/' *.JPG *.MOV
Aqui é desnecessário, mas se o regexp corresponder mais do que a parte que você quer minúsculas, você pode colocar a parte a ser correspondida em um :
rename 's/\.([^.]*)$/.\L$1/' *.JPG *.MOV
Substitua *.JPG *.MOV
por *.*
para atuar em todos os arquivos, independentemente da extensão. No bash ≥4.3 (e também no bash 4.0–4.2, com a ressalva de que isso também percorre links simbólicos para diretórios), você pode facilmente agir em arquivos em subdiretórios e assim por diante de maneira recursiva:
rename 's/\.[^.]*$/\L$&/' **/*.*
Para os fãs do zsh (os :r
e :e
modificadores isolam a extensão do resto do arquivo):
autoload zmv
zmv '*.(MOV|JPG)' '${f:r}.${(L)f:e}' # these extensions, current directory
zmv '*.*' '${f:r}.${(L)f:e}' # all extensions, current directory
zmv '**/*.*' '${f:r}.${(L)f:e}' # all extensions, recursive directory traversal