ls -l file_* |
awk '{system("echo mv -v -- " $9 " file_" toupper($6) $8);}'
Para a renomeação real de arquivos, a palavra echo deve ser removida.
Explicação
-
ls -l file_* | awk- lista todos os arquivos e envia-os para oawk. -
system()- executa o comando shell. -
mv -v -- " $9 " file_" toupper($6) $8--
mv- o comando usualmvexecutado no shell. -
toupper(str)- retorna uma cópia da string str , com todos os caracteres minúsculos em str traduzidos para as contrapartes maiúsculas correspondentes. -
$6- mês: ago, jul, fev. -
$8- ano: 1938, 1947, 2037. -
$9- nome do arquivo: arquivo_1, arquivo_10, arquivo_100.
-
Arquivos
$ ls -l file_*
-rw-rw-r-- 1 user user 0 Aug 1 1938 file_1
-rw-rw-r-- 1 user user 0 Jul 1 1947 file_10
-rw-rw-r-- 1 user user 0 Feb 1 2037 file_100
Resultado
mv -v -- file_1 file_AUG1938
mv -v -- file_10 file_JUL1947
mv -v -- file_100 file_FEB2037