Eu criei uma solução rápida no formato de uma linha:
for f in *; do mv -i "$f" "'echo $f | sed -e 's/\(.*\)/\L/' -e 's/\( .\)/\U/g' -e 's/\(^.\)/\U/g''"; done
Ou em legível (mas marginalmente menos confortável para copiar o formulário de colagem):
for f in *; do
mv -i "$f" "'echo $f |
sed -e 's/\(.*\)/\L/' -e 's/\( .\)/\U/g' -e 's/\(^.\)/\U/g''";
done
Esse comando usa sed
to mv
each file para um arquivo com o mesmo nome, mas no qual todos os caracteres são os primeiros convertido para minúsculas , então cada combinação de espaço seguida por qualquer caractere é transformada em maiúscula, então o primeiro caractere é virado em maiúsculas.
Isso perguntará antes de sobrescrever.
Remova -i
se você quiser substituí-lo automaticamente.