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 usualmv
executado 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