Eu uso rename
o tempo todo. É bem simples, mas espero que você saiba o regex básico:
rename "s/SEARCH/REPLACE/g" *
Isto irá substituir a cadeia SEARCH
com REPLACE
em cada arquivo (ou seja, *
). O /g
meio global, então, se você tivesse um SEARCH_SEARCH.jpg
, ele seria renomeado REPLACE_REPLACE.jpg
. Se você não tivesse /g
, teria feito a substituição apenas uma vez e, portanto, agora nomeado REPLACE_SEARCH.jpg
. Se você quiser fazer distinção entre maiúsculas e minúsculas, adicione /i
(isso seria /gi
ou /ig
no final).
Com expressões regulares, você pode fazer muito mais.
Observe que este rename
é o comando prename
(também conhecido como Perl rename
), que suporta expressões regulares completas do Perl. Há outro rename
que usa padrões e não é tão poderoso. prename
costumava ser instalado por padrão no Ubuntu (junto com o Perl), mas agora você pode ter que fazer:
sudo apt install rename
Aqui estão alguns exemplos:
Prefixo
Adicionar :
rename 's/^/MyPrefix_/' *
document.pdf
renomeado para MyPrefix_document.pdf
Remover :
Além disso, você pode remover seqüências indesejadas. Digamos que você tenha 20 arquivos MP3 com o nome like CD RIP 01 Song.mp3
e que queira remover a parte "CD RIP", e que deseja removê-los de todos eles com um único comando.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
para 01 Song.mp3
Observe o espaço extra '^CD RIP '
, sem o espaço em que todos os arquivos teriam um espaço como o primeiro caractere do arquivo. Observe também que isso funcionará sem o ^
caractere, mas corresponderá CD RIP
em qualquer parte do nome do arquivo. As ^
garantias de que apenas os caracteres serão removidos se forem o início do arquivo.
Sufixo
Adicionar :
rename 's/$/_MySuffix/' *
document.pdf
renomeado para document.pdf_MySuffix
Alterar :
rename 's/\.pdf$/.doc/' *
vai mudar Something.pdf
para Something.doc
. (A razão para a barra invertida é, .
é um caractere curinga no regexp tão .pdf
partidas qPDF
enquanto \.pdf
única corresponde a seqüência exata .pdf
. Também é muito importante notar, se você não estiver familiarizado com o bash, você deve colocar barras invertidas entre aspas simples! Você não pode omitir citações ou use aspas duplas, ou o bash tentará convertê-las. Para bash \.
e "\."
iguais .
. (Mas aspas duplas e barras invertidas são usadas, por exemplo "\ n" para uma nova linha, mas como "\."
não é uma sequência de escape posterior válida, ela traduz em .
)
Na verdade, você pode até colocar as partes da string entre aspas, em vez do todo: 's/Search/Replace/g'
é o mesmo que s/'Search'/'Replace'/g
e s/Search/Replace/g
para BASH. Você só precisa ter cuidado com caracteres especiais (e espaços).
Sugiro usar a -n
opção quando você não estiver certo de ter as expressões regulares corretas. Ele mostra o que seria renomeado e sai sem fazer isso. Por exemplo:
rename -n s/'One'/'Two'/g *
Isso listará todas as alterações que ele teria feito se você não tivesse colocado a -n
bandeira lá. Se parecer bom, pressione Uppara voltar e apague -n
e pressione Enter(ou substitua-o por -v
para exibir todas as alterações que fizer).
Nota : As versões do Ubuntu acima do 17.04 não são fornecidas rename
por padrão, no entanto, ainda estão disponíveis nos repositórios. Use sudo apt install rename
para instalá-lo