
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
$2
e$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 -n
para renomear os arquivos que são usados para teste.