Supondo que você tenha a renomeação Perl fornecida pelo Debian e distribuições derivadas como Debian e Ubuntu, você está quase lá. O problema é que -execdir
passa um nome de arquivo prefixado com ./
para o comando. (A razão para isso é que alguns comandos tratam argumentos que começam com alguns caracteres especialmente; assim, se você tiver um arquivo chamado -foo
, ele será passado como ./-foo
e, portanto, tratado como um arquivo e não como uma opção). sua regex, isso resulta em $1
estar sempre vazio e, portanto, o novo nome é idêntico ao antigo.
Acomode para este ./
em sua expressão regular.
find . -depth -execdir rename 's/^(\.\/[^.]*)\.(.*)$/\U$1\E.$2/' {} \;