Comando "rename"

Rename: renomear vários ficheiros em lote no Linux

Renomear vários ficheiros em lote?! Sim, rápido e fácil, com o comando rename.

Vejamos o que se pretende, utilizando uma situação concreta. Descobri, há tempos, que numa pasta tinha trinta e tal ficheiros pdf, mas sem extensão (o que é isso de extensão? Se necessário, pode ler A extensão do nome dos ficheiros): os nomes terminavam com um ponto final (no género de ficheiro1.). Precisava, pois e na prática, de os renomear (por exemplo, de ficheiro1. para ficheiro1.pdf).

Alterar todos os nomes individualmente era possível, mas algo moroso e até entediante, sobretudo se considerarmos que é possível fazer isso rapidamente no terminal escrevendo apenas uma linha, utilizando o comando rename.

Comando "rename"
[imagem copiada daqui]

Instalar o rename

É muito provável que rename não esteja instalado no seu sistema por pré-definição. Nesse caso, há que instalá-lo. Eu instalei-o no Ubuntu (20.04), pelo que é o procedimento que descrevo a seguir (para instalação em outras distribuições Linux, consulte esta página). E é muito simples:

  • Abrir um terminal (Ctrl+Alt+T)
  • Escrever sudo apt-get install rename

Como utilizar o rename

Para ser mais simples, quando faço alguma operação em ficheiro(s) de uma pasta através do terminal, mudo-me para essa pasta. O processo que considero mais simples é tocar num espaço vazio da pasta com o botão direito do rato e escolher a opção Abrir no Terminal.

Portanto, já estou no terminal e na pasta onde me aguardam os trinta e tal ficheiros. Recordo o que quero: substituir o ponto final do nome dos ficheiros por .pdf — para o que utilizo o comando seguinte:

rename ‘s/\.$/\.pdf/’ *

Explicando:

  • A sintaxe do comando é: rename ‘s/<coisa_a_substituir>/<substituir_por_isto>/<nome_dos_ficheiros>
  • Os campos <coisa_a_substituir>/<substituir_por_isto> são preenchidos com expressões regulares (regex – mais informações, aqui)
  • s significa substitute; os carateres / / / são delimitadores dos campos; $ indica o final de uma linha (no caso, .$ significa um ponto no fim da linha, no fim do nome do ficheiro)

Para insistir no comando…

Quando estava a experimentar o comando rename (a aprender a trabalhar com ele), fiz asneira. Todos os nomes ficheiros iniciavam com DOC. Um comando errado substituiu o D inicial por .pdf (resultado: todos os nomes dos ficheiros ficaram a iniciar por .pdf; por exemplo, DOC2020. passou a .pdfOC2020.).

Haveria, por isso, que substituir .pdfOC por DOC em todos os nomes de ficheiros iniciados por .pdfOC — pelo que o comando que tratou da tarefa foi este:

rename ‘s/\.pdfOC/DOC/’ .pdf*

Note: é um comando que substitui .pdfOC por DOC em todos os ficheiros iniciados por .pdf (o asterisco indica todos).


||| E que tal um pequeno exercício? Na fase de experimentações, para ver se tinha entendido, utilizei este comando: rename ‘s/pdfOC/DOC/’ .pdfOC-20200410-WA0012. — o que obtive com ele?

||| E o que faz o comando rename ‘s/.prog/.prg/’ *.prog? (a solução está neste artigo, onde encontra, em inglês, explicação do comando e outros exemplos, como este: rename ‘s/slang_/sl_’ *.c).

||| Pode também consultar esta página, também em inglês. Ou esta, em português. Ou esta, também em português.

||| A solução para este problema (e, por consequência, este artigo) deve muito (na realidade, deve quase tudo) a dois elementos de um grupo do Telegram, o Ubuntu-PT: o Paulo Peixoto e o Tiago Carreira.

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Scroll to Top