for i in *;
do new='echo "$i" | sed -e 's/^./\U&/'';
mv "$i" "$new";
done;
Seria todo o código dividido para torná-lo facilmente visível, explicarei abaixo.
Primeiro temos que ter certeza de que processamos cada arquivo, a seguinte linha significa: "Faça o seguinte contanto que você possa encontrar arquivos"
for i in *;
Em seguida, temos que carregar o nome do arquivo atual (que é armazenado na variável $ i), substituir a primeira letra por uma versão em maiúscula e armazenar o novo nome (na variável $ new).
O seguinte comando basicamente significa:
Tornar variável $ new ( do new=
)
Carregue $ i e encaminhe-o ( "$i" |
)
para uma função que substitui a primeira letra por uma maiúscula. ( sed -e 's/^./\U&/'
; ')
A página de manual do sed pode ser encontrada aqui . É usado para realizar transformações básicas de texto. O que basicamente é fazer é usar uma expressão regular (a 's/^./\U&/'
part) (uma maneira de detectar um determinado padrão em um texto) para detectar os primeiros caracteres não capitalizados e substituí-los por uma versão em maiúsculas.
do new=echo "$i" | sed -e 's/^./\U&/';
Depois de obtermos o novo nome, é hora de renomear o arquivo com o novo nome em maiúscula, o seguinte comando faz isso.
Ele diz: mova (mesmo que renomeie) o arquivo antigo foo.bar para o novo Foo.bar.
mv "$i" "$new";
Portanto, agora temos um arquivo renomeado e é hora de passar para o próximo. O seguinte conclui a função for, dizendo que agora é hora de seguir adiante e processar o próximo arquivo.
done;