Renomeia arquivos incrementalmente em um diretório específico?

6

Eu tenho um diretório contendo muitos arquivos .txt , eu preciso de um comando para renomear esses arquivos por um comando, então o nome deles será: file1.txt , file2.txt, file3.txt , etc .

Alguma ajuda?

    
por nux 08.03.2014 / 16:15

3 respostas

19

Você pode usar isso no terminal para renomear os arquivos como quiser,

j=1;for i in *.txt; do mv "$i" file"$j".txt; let j=j+1;done

Ele fará o trabalho.

Explicação:

  • Defina um contador j , defina inicialmente como 1
  • Inicie um loop for e use um shell glob *.txt para obter todos os arquivos txt .
  • para cada arquivo renomeie-o usando mv e aumente o contador em 1.
por souravc 08.03.2014 / 16:22
6

Você pode usar o comando renomear, que geralmente é incluído em uma instalação padrão:

c=0 rename 's/.*/sprintf("file%d.txt", ++$ENV{c})/e' *

Use o sinalizador -n se você quiser fazer um teste primeiro:

c=0 rename -n 's/.*/sprintf("file%d.txt", ++$ENV{c})/e' *

A maneira como isso funciona é, para cada argumento, ele executa a expressão perl s/// e executa a renomeação do original para a string substituída. Na string de substituição eu uso sprintf para formatar o nome, onde eu uso a variável de ambiente c como o contador de 1.

    
por janos 08.03.2014 / 16:26
2

O comando a seguir também renomeia arquivos de forma incremental:

cd (directory containing files )

Em seguida, execute este script:

count=1
for i in *; do
    mv "${i}" file${count}.'echo "${i}" | awk -F. '{print }''
    ((++count))

done 
    
por nux 08.03.2014 / 16:33