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
sequence 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
-
pastea 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
awkpara 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)-
-n2significa 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