você está aqui: Home  → Arquivo de Mensagens

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



 

 

Veja a relação completa dos artigos de Otávio Penatti

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script