Renomeando vários arquivos com Bash [duplicado]

1

Tenho muitos arquivos para processar e preciso substituir os nomes originais por esse formato no bash:

00000000000001_1.jpg 
00000000000002_1.jpg
00000000000003_1.jpg

e assim por diante

    
por deXterlab97 19.03.2018 / 22:32

2 respostas

4

Adaptado de uma das respostas de Oli :

rename -n 's/.+/our $i; $i++; sprintf("%014d_1.jpg", $i)/e' *

Isso pega todos os arquivos no diretório atual e os renomeia com um número com 14 dígitos (espero ter contado corretamente) seguido por _1.jpg . our $i apresenta uma variável global i , que é aumentada em um e impressa com sprintf . e comandos rename para avaliar o lado direito da substituição (= tudo entre o segundo e o terceiro / ) como uma expressão em vez de literalmente. Se você estiver satisfeito com os resultados, remova -n para realizar a renomeação.

Se você quiser mergulhar em expressões perl e em sua beleza, o perldoc é o caminho a percorrer.

    
por dessert 20.03.2018 / 00:13
2

Isso funcionaria para você:

i=1
for file in *; do
    mv "$file" "$(printf %014d $i)_1.jpg"
    i=$((i+1))
done

Ele renomeia todos os arquivos no diretório atual da seguinte forma:

00000000000001_1.jpg
.
.
00000000000009_1.jpg
.
.
00000000000010_1.jpg
.
.
    
por Paul 19.03.2018 / 23:21