Eu uso renameo tempo todo. É bem simples, mas espero que você saiba o regex básico:
rename "s/SEARCH/REPLACE/g" *
Isto irá substituir a cadeia SEARCHcom REPLACEem cada arquivo (ou seja, *). O /gmeio 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 /giou /igno 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 renameque usa padrões e não é tão poderoso. prenamecostumava 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.mp3e 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.pdfpara Something.doc. (A razão para a barra invertida é, .é um caractere curinga no regexp tão .pdfpartidas qPDFenquanto \.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'/ge s/Search/Replace/gpara BASH. Você só precisa ter cuidado com caracteres especiais (e espaços).
Sugiro usar a -nopçã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 -nbandeira lá. Se parecer bom, pressione Uppara voltar e apague -ne pressione Enter(ou substitua-o por -vpara exibir todas as alterações que fizer).
Nota : As versões do Ubuntu acima do 17.04 não são fornecidas renamepor padrão, no entanto, ainda estão disponíveis nos repositórios. Use sudo apt install renamepara instalá-lo