Que tal
ls > /tmp/list ; seq -w 'ls | wc -l' | paste /tmp/list - | awk -F\t '{ print , "IMG"".jpeg"}' | xargs -n2 mv
- Listar os arquivos e redirecionar a lista para um arquivo temporário
/tmp/list
- Escreva uma
seq
uence de números, preenchidos com zeros, igual ao número de arquivos para STDOUT- A contagem de arquivos é obtida listando os arquivos e o encanamento no aplicativo
wc
(contagem de palavras) no modo "linhas"
- A contagem de arquivos é obtida listando os arquivos e o encanamento no aplicativo
-
paste
a sequência de números do comando anterior no lado direito da lista de arquivos de/tmp/list
- Colar cola dois arquivos juntos como colunas separadas por um caractere
TAB
- Canaliza a saída para o próximo programa
- Colar cola dois arquivos juntos como colunas separadas por um caractere
- Use um pequeno programa
awk
para reformatar esses dois campos- Separadores especificados como guia (
\t
- a primeira barra é para escapar da segunda) - Primeiro campo
, o nome do arquivo original impresso como está
- Segundo campo
, o número de sequência, impresso com um prefixo IMG e um sufixo .jpeg
- Canaliza a saída para o próximo programa
- Separadores especificados como guia (
- Usando
xargs
, passe os pares de argumentos para o comandomv
(mover / renomear)-
-n2
significa que ele passará 2 deles de cada vez
-
NB, presume-se que os nomes dos arquivos originais não contenham espaços.
Se você quer começar em um número diferente de 1, você precisa manipular os parâmetros de seq; por exemplo,
COUNT='ls | wc -l' ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST