Pular para o conteúdo

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

Dica publicada em Shell Script / Miscelânea
Fernando Krein Pinheiro fernandopinheiro
Hits: 22.063 Categoria: Shell Script Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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

Sincronizando o relógio da BIOS - SyncTime

Contador de Palavras no Terminal

Escondendo / Personalizando mensagens de erro no prompt

sudo: lendo a senha automaticamente através de shell script

LTSP + Sound Blaster + Som

#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

Entre na sua conta para comentar.