Como posso renomear arquivos em lote com terminal

1

Se eu tiver um conjunto de arquivos como:

1-3-Image Export-08_s3c1.jpg

e gostaria de renomear a primeira parte para algo parecido com isso, adicionando e substituindo a primeira parte com 'G2_NR2_replicate2':

G2_NR2_replicate2_s3c1.jpg

Como processar em lote isso em um terminal?

    
por user288779 05.06.2014 / 19:47

2 respostas

4

Execute o comando abaixo rename dentro do diretório em que todos os arquivos .jpg estão localizados,

rename 's/^[^_]*(.*)$/G2_NR2_replicate2/' *.jpg

Renomeia todos os arquivos que estão no formato ( nome ),

1-3-Image Export-08_s3c1.jpg
1-3-Image Export-08_s3c2.jpg
......
1-3-Image Export-08_s3c1000.jpg

para

G2_NR2_replicate2_s3c1.jpg
G2_NR2_replicate2_s3c2.jpg
.....
G2_NR2_replicate2_s3c1000.jpg

Explicação:

's/^[^_]*(.*)$/G2_NR2_replicate2/'

    O comando
  1. rename funciona da mesma forma que o comando sed . ( s/pattern/replace/ )

  2. Na parte padrão, damos o padrão como ^[^_]*(.*)$

    • ^ - > ponto de partida

    • [^_]* - > Corresponde a qualquer caractere, exceto _ zero ou mais vezes. Então, ele combina até 1-3-Image Export-08 e o caractere whaterver ( s3c1 ) vem depois que essa parte é capturada e armazenada em um grupo que foi representado por esse padrão (.*)$ .

    • Agora, na peça de substituição, colocamos o texto dado pelo op ( G2_NR2_replicate2 ) mais o grupo capturado.

  3. Finalmente, o comando rename executa toda a operação.

por Avinash Raj 05.06.2014 / 19:56
0

EDIT: @Avinash Raj resposta é melhor. Use o comando rename como mostrado.

Tente usar sed juntamente com for . Consulte: link

    
por Aerozeek 05.06.2014 / 19:57