Renomeando extensões de centenas de arquivos de uma só vez

Publicado por Fernando Krein Pinheiro em 28/03/2011

[ Hits: 21.040 ]

 


Renomeando extensões de centenas de arquivos de uma só vez



Aí galera do Viva o Linux.

Dias atrás me deparei com uma situação que até então não tinha me ocorrido. Uma colega de trabalho teve os dados do seu pendrive totalmente renomeados para uma extensão do tipo "CHK ". Ela estava apavorada, pois o conteúdo era importante e continha, além de fotos, os trabalhos da faculdade também. Ela me pediu ajuda para tentar recuperá-los e eu disse que ia ver o que podia fazer.

Abrindo o pendrive, vi que tinha 4 pastas sendo que: uma estava intitulada de "fotos", outra de "trabalhos", outra de "músicas" e a última de "monografia". A primeira tentativa minha foi de recuperar os arquivos da pasta trabalho, para isso eu tentei renomear a extensão do primeiro arquivo que no caso estava assim: nome_do_arquivo.CHK para nome_do_arquivo.doc.

Após isso abri o arquivo normalmente e pude visualizar o seu conteúdo. Só que na pasta "trabalho" deveria ter +/- uns 200 arquivos com a extensao CHK, e eu não sou louco nem nada para renomear um de cada vez. Foi aí que pensei em um script que fizesse isso de forma rápida e sem muito trabalho, o qual compartilho com vocês hoje.

Lembrando que para executar o script o mesmo deve estar na pasta onde encontram-se os arquivos a serem renomeados e você deverá dar permissão de execução para tal.

Ex.: no terminal digite:

chmod +x RenomeiaArq.sh

Logo após digite:

./RenomeiaArq.sh

E pronto, seus arquivos estarão com as extensões totalmente renomeadas.

## Script para renomear extensões
#
# Autor: Fernando Pinheiro
# Data: 22/08/2010
#!/bin/sh
# Depois do "ponto" você deve mudar a extensão de acordo com o seu arquivo
# No meu caso todos arquivos estavam com a extensão "CHK".

for arquivo in *.CHK
do

# Depois de "arquivo" voce deverá mudar a extensão novamente para extensão
# do seu arquivo, e logo apos o ")" voce devera escolher a extensao para #renomearção #dos arquivos. No meu caso eu queria todos os arquivos com
#extensão "doc".

        newname=$(basename $arquivo CHK)doc

# Faz com que o arquivo seja renomeado
        mv $arquivo $newname
done

Outras dicas deste autor

Fazendo comparações sem o uso de IF, ELSE em C

Leitura recomendada

Twittar via terminal no Linux

Windows e Samba com Desktop padronizado

Rotacionando vídeos com o Mencoder

Ordenando strings em shell script

Showterm: screencast pelo terminal

  

Comentários
[1] Comentário enviado por Fellype em 28/03/2011 - 17:44h

Boa dica. Mas dá pra deixar mais simples ainda (eu achei isso em algum fórum aqui no VOL um tempo atrás ):

for arquivo in *.CHK
do mv ./"$arquivo" "${arquivo%CHK}doc";
done

Só não me peça pra explicar as sintaxes :-p

[2] Comentário enviado por removido em 28/03/2011 - 17:45h

mv *.CHK *.doc <= isso não funciona (bons tempos do pc-dos)?

[3] Comentário enviado por fernandopinheiro em 28/03/2011 - 18:12h

danielgianni como assim não funciona???
Usei esses dias ainda !!!

Testa ai no seu ubuntu pra ve se não funciona então !!!Aqui ta rolando tranquilo

[4] Comentário enviado por eldermarco em 28/03/2011 - 22:25h

Veja só que legal se eu tentar usar a função rename:

------------------------------------------------------------------------
$touch arq{1..10}.txt
$ ls
arq10.txt arq1.txt arq2.txt arq3.txt arq4.txt arq5.txt arq6.txt arq7.txt arq8.txt arq9.txt
$ rename .txt .dat *.dat
$ ls
arq10.dat arq1.dat arq2.dat arq3.dat arq4.dat arq5.dat arq6.dat arq7.dat arq8.dat arq9.dat
-------------------------------------------------------------------------

Viu? Mudou a extensão sem qualquer problema. :-)

Esse comando faz parte do pacote util-linux-ng

[5] Comentário enviado por fabriciobslogan em 20/04/2011 - 17:41h

ai galera o melhor Fernando ter postado a dica foi que apareceu mais dicas para fazer a mesma coisa!!!!
Curti!!! como sou iniciante no linux achei bem bacana!!!

[6] Comentário enviado por Teixeira em 21/04/2011 - 20:47h

Boa, Fernando!
Apenas lembrando, o utilitário CHKDISK das versões mais antigas do Windows renomeia os arquivos para FILE0001.CHK, FILE0002.CHK, FILE0003.CHK, ... FILE9999.CHK, o que torna essa recuperação muito trabalhosa, pois teremos de abrir um por um e renomeá-los.

[7] Comentário enviado por LonelyEagle em 08/10/2014 - 22:41h

Cara, muito bom, funcionou 100% aqui...



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts