Precisa de ajuda com o comando renomear no Linux

Precisa de ajuda com o comando renomear no Linux

Tenho vários arquivos com estes nomes:

file1, A.ext  
file1, The.ext  

Eu preciso mudar seus nomes como

A file1.ext  
The file1.ext

Ou seja, preciso mover o artigo do final para o início apagando a vírgula. Como eu faria isso?

Eu pesquisei o comando rename mas não tenho experiência com perl regex, criei esse comando ridículo que não funciona, estou deixando para mostrar meu desespero:

rename 's/(?<=[A-Z a-z \s]*),\sA//' *

Responder1

Você precisaria ter:

rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
  • Isso ^([^,]*),corresponde a tudo, exceto uma vírgula, até a primeira vírgula vista no início do nome do arquivo.

  • Isso \s*(.*)\.ext$corresponde a zero ou mais espaços em branco seguidos de qualquer coisa e termina com .ext.

  • O $2e $1é uma referência anterior ao (.*)e ([^,]*)respectivamente.

farei renomear da seguinte forma:

rename(a single file,.ext,  a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)

P,s: remova -npara renomear os arquivos que são usados ​​para teste.

informação relacionada