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.
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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários