renomeia o comando no linux

2

Eu tenho vários arquivos com esses nomes:

file1, A.ext  
file1, The.ext  

Eu preciso mudar os nomes para

A file1.ext  
The file1.ext

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

Eu olhei para o comando rename mas não tenho experiência com o perl regex, eu criei este comando ridículo que não funciona, estou deixando para mostrar minha falta de esperança:

rename 's/(?<=[A-Z a-z \s]*),\sA//' *
    
por Enan Ajmain 28.05.2018 / 08:49

1 resposta

2

Você precisaria ter:

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

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

  • As $2 e $1 são referências anteriores às (.*) e ([^,]*) , respectivamente.

será renomeado 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: remove -n para renomear os arquivos que são usados para testes.

    
por 28.05.2018 / 09:02

Tags