De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Renomeando Múltiplos Arquivos

Colaboração: Otávio Penatti

Data de Publicação: 05 de Março de 2005

Já houve várias vezes em que precisei renomear vários arquivos de uma só vez e nos quais havia um certo padrão em seus nomes. Acredito que isto também já tenho ocorrido com muita gente além de mim.

Os arquivos tinham, por exemplo, o texto "-www.unicamp.br-" no nome e eu queria tirar esse pedaço de texto do nome dos arquivos ou então substituí-lo por algum outro texto.

Com o script abaixo foi possível fazer isso de forma simples:

  #!/bin/bash
  
  criterio=$1
  antigo=$2
  novo=$3
  
  if [ $# -lt 3 ] ; then
         echo "modo de usar: renomeia [criterio] [texto_a_ser_substituido] [texto_substituto]"
         exit 0
  fi
  
  for arq in *$criterio*
  do
         mv "$arq" "$(echo $arq | sed "s/$antigo/$novo/")"
  done

O laço "for" varre os arquivos do diretório atual baseado em um critério. Por exemplo, se quiser renomear os arquivos JPG do diretório, basta usar "jpg" como critério. Ou, se quiser renomear os arquivos que contenham "foto-" no nome, basta usar "foto-" como critério.

O parâmetro "antigo" é o texto que será substituído no nome do arquivo, como, por exemplo, "-www.unicamp.br-".

O parâmetro "novo" é o texto substituto, que será colocado no lugar do texto antigo. Se for vazio, basta usar '' (aspas simples).

Um detalhe importante no script são as aspas no comando:

  mv "$arq" "$(echo $arq | sed "s/$antigo/$novo/")"

Se as aspas não é possível renomear arquivos que contenham espaços no nome.

O script usa o sed para fazer a troca dos nomes e como o sed aceita expressões regulares, fica fácil fazer substituições de texto mais complexas.

Um exemplo de uso do script seria:

  ./renomeia jpg foto- ''

No exemplo, todos os arquivos que tenham jpg (no nome ou extensão) terão o texto "foto-" retirado do nome.

Otávio Penatti

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)