Script com muitas utilidades para arquivos e pastas [Artigo]

Explicação inicial

Ao passar dos anos vi que meus arquivos estavam virando uma bagunça em alguns quesitos, por exemplo: nome das fotos estarem separadas com espaços e sem organização de nome, músicas com o nome das pastas em minúsculo e as respectivas musicas em maiúsculas etc. Às vezes pensava em renomear apenas os *.jpg de uma pasta, mas não os *.mpeg *.avi, e por aí vai…Esse script tem as seguintes funções:

  1. Transformar pastas em maiúsculas
  2. Transformar pastas em minúsculas
  3. Transformar arquivos em maiúsculos
  4. Transformar arquivos em minúsculos
  5. Retirar espaço das pastas
  6. Renomear

Para ter uma interface amigável eu resolvi utilizar o Xdialog. Algumas distros já tem o Xdialog por default, porém para a maioria é necessário fazer a instalação.

Para instalar digite no terminal:

# apt-get install xdialog

Obs.: este script não roda sem a instalação do Xdialog.

Opções do script

Bom, como vocês viram no tópico anterior, ele tem 6 utilidades.

Vamos a primeira:

1) Transformar pastas em maiúsculas:

Aqui basta você escolher, na tela gráfica, o nome da pasta onde todos os diretórios nela incluídos se tornarão maiúsculos. Este script irá trabalhar somente no diretório corrente, pois se fosse trabalhar juntamente com subdiretórios iria aumentar a confusão dos arquivos.

Note que o caminho em que estão seus arquivos/diretórios estão escritos ao lado do campo “Seleção” na parte inferior da janela. Este caminho é muito importante, procure estar atento, pois se você escolher errado poderá alterar os arquivos/pastas que não desejou e depois será complicado voltar atrás.

2) Transformar pastas em minúsculas:

O mesmo que o passo acima, porém o nome das pastas serão transformados em letras minúsculas.

3) Transformar arquivos em maiúsculos:

Neste passo você deve selecionar a pasta que deseja transformar o nome dos arquivos em letras maiúsculas. Isso vale somente para arquivos do diretório corrente e não os subdiretórios.

Lembre-se que o campo “Seleção” na parte inferior da janela é onde registra o local que você definiu. Repito pelo fato de haver confusão em alguns casos. Você deve clicar em cima do diretório e conferir se ele apareceu neste campo.

4) Transformar arquivos em minúsculos:

O mesmo que o passo acima, porém o nome dos arquivos serão transformados em letras minúsculas.

5) Retirar espaço dos arquivos e pastas:

Esta opção faz com que o(s) espaço(s) de todos os arquivos e pastas do diretório corrente sejam substituídos por “_” , Exemplo: “foto da festa.jpg” transformará para “foto_da_festa.jpg”; “GUNS AND ROSES/” moverá para “GUNS_AND_ROSES/” etc.

6) Renomear:

Esta á e opção mais desejada para a organização de nossos arquivos!

Bom, eu tiro muitas fotos de aniversários, viagens, baladas. Geralmente as fotos destes eventos são tiradas por mais de uma pessoa. Quando você for juntar todas as fotos em uma pasta qual a surpresa que você tem? Argh..”quantos nomes diferentes…DCS_20100102.jpg, foto_652.jpg, IMG_20080911.jpg”, “em que ordem essas fotos foram tiradas?”, “não tem como eu deixar todas as fotos do meu aniversário com um nome só?”, etc etc.

Agora pense que em seu aniversário tiveram fotos com extensão *.JPG e *.JPEG, além disso fizeram vídeos com a extensão *.avi, *.mpeg, *.mp4 e *.3gp. Sinceramente será muito trabalhoso para você organizar todos estes arquivos. A opção RENOMEAR veio para ser a nossa máquina de lavar roupa, basta digitarmos poucas e simples palavras para o script fazer todo o resto!

Inicialmente você vai selecionar a pasta em que deseja renomear seus arquivos. Na sequência aparecerá uma tela com todas as extensões contidas na pasta (*.jpg, *.avi, *.mp3 etc), você irá escolher somente uma e clicar em OK. Na tela seguinte aparecerá uma janela alertando que você não pode escolher um nome que já contenha na pasta, por exemplo: você tem a pasta “TESTE/” com os arquivos: “festa_1.jpg”, “festa_2.jpg”, “festa_3.jpg” etc. Você não pode colocar o mesmo nome que já existe, neste caso “festa”. Escolha algo parecido como “festas”, “festona”. De OK e digite o novo nome na próxima janela!

Explicação concluída, agora vamos ao script no próximo passo!

#!/bin/bash # # ## SCRIPT PARA UTILIDADES EM ARQUIVOS E/OU PASTAS ## PARA UM DESKTOP PESSOAL: TRABALHAR COM IMAGENS, MUSICAS, VÍDEOS, ETC ## PARA UM AMBIENTE CORPORATIVO: TRABALHAR COM LOGS, BACKUP's, ETC # r1="/tmp/resp1.tmp" r2="/tmp/resp2.tmp" r3="/tmp/resp3.tmp" ###### PASTAS VIRAR MAIÚSCULAS ###### PASTAS_VIRAR_MAIUSCULAS() {   Xdialog --msgbox "NA TELA SEGUINTE SELECIONE O DIRETÓRIO EM QUE \n SE DESEJA TRANSFORMAR TODAS AS PASTAS EM MAIÚSCULO" 10 70   Xdialog --dselect ./ 30 75 2> $r1   resp1=`cat $r1`   if [ -z $resp1 ]   then     Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40   else     cd $resp1     find * -maxdepth 0 -type d | while read dir       do         novo_nome=`echo $dir | tr 'a-z' 'A-Z'`         mv "$dir" "$novo_nome" 2> /dev/null       done     Xdialog --msgbox "AS PASTAS DO DIRETÓRIO\n $resp1 \n FORAM TRANSFORMADAS EM MAIÚSCULAS" 10 70   fi rm $r1 } ##### PASTAS VIRAR MINÚSCULAS ##### PASTAS_VIRAR_MINUSCULAS() {   Xdialog --msgbox "NA TELA SEGUINTE SELECIONE O DIRETÓRIO EM QUE \n SE DESEJA TRANSFORMAR TODAS AS PASTAS EM MINÚSCULO" 10 70   Xdialog --dselect ./ 30 75 2> $r1   resp1=`cat $r1`   if [ -z $resp1 ]   then     Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40   else     cd $resp1     find * -maxdepth 0 -type d | while read dir       do         novo_nome=`echo $dir | tr 'A-Z' 'a-z'`         mv "$dir" "$novo_nome" 2> /dev/null       done   Xdialog --msgbox "AS PASTAS DO DIRETÓRIO\n $resp1 \n FORAM TRANSFORMADAS EM MINÚSCULAS" 10 70   fi rm $r1 } ###### ARQUIVOS VIRAR MAIÚSCULOS ###### ARQUIVOS_VIRAR_MAIUSCULOS() {   Xdialog --msgbox "NA TELA SEGUINTE SELECIONE O DIRETÓRIO EM QUE \n SE DESEJA TRANSFORMAR OS ARQUIVOS EM MAIÚSCULOS" 10 70   Xdialog --dselect ./ 30 75 2> $r1   resp1=`cat $r1`   if [ -z $resp1 ]   then     Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40   else     cd $resp1     find * -maxdepth 0 -type f | while read dir       do         novo_nome=`echo $dir | tr 'a-z' 'A-Z'`         mv "$dir" "$novo_nome" 2> /dev/null       done   Xdialog --msgbox "OS ARQUIVOS DA PASTA\n $resp1 \n FORAM TRANSFORMADOS EM MAIÚSCULOS" 10 70   fi rm $r1 } ##### ARQUIVOS VIRAR MINÚSCULOS ##### ARQUIVOS_VIRAR_MINUSCULOS() {   Xdialog --msgbox "NA TELA SEGUINTE SELECIONE O DIRETÓRIO EM QUE \n SE DESEJA TRANSFORMAR OS ARQUIVOS EM MINÚSCULOS" 10 70   Xdialog --dselect ./ 30 75 2> $r1   resp1=`cat $r1`   if [ -z $resp1 ]   then     Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40   else     cd $resp1     find * -maxdepth 0 -type f | while read dir       do         novo_nome=`echo $dir | tr 'A-Z' 'a-z'`         mv "$dir" "$novo_nome" 2> /dev/null      done   Xdialog --msgbox "OS ARQUIVOS DA PASTA\n $resp1 \n FORAM TRANSFORMADOS EM MINÚSCULOS" 10 70   fi rm $r1 } ##### ESPAÇO RETIRAR ##### ESPACO_RETIRAR() {   Xdialog --msgbox "NA TELA SEGUINTE SELECIONE O DIRETÓRIO EM QUE OS \n ESPAÇOS DA PASTA E ARQUIVOS\n SERÃO SUBSTITUÍDOS POR '_'" 10 70   Xdialog --dselect ./ 30 75 2> $r1   resp1=`cat $r1`   if [ ! -z $resp1 ]    then     cd $resp1     find * -maxdepth 0 -name '*'  | while read pasta     do       new_name=`echo $pasta | sed 's/ /_/g'`       mv "$pasta" "$new_name" 2> /dev/null     done   Xdialog --msgbox "OS ESPAÇOS DO DIRETÓRIO\n $resp1 \n FORAM SUBSTITUÍDOS POR '_'" 10 70   else   Xdialog --msgbox "ABORTANDO O SCRIPT" 5 30   fi rm $r1 } ##### RENOMEAR ##### RENOMEAR() {   Xdialog --msgbox "NA TELA SEGUINTE SELECIONE A PASTA ONDE ESTÃO OS ARQUIVOS" 5 65   Xdialog --dselect ./ 30 75 2> $r1   resp1=`cat $r1` extensoes=` for file in $resp1* do echo ${file##*.} done | sort | uniq` Xdialog --inputbox "QUAL EXTENSÃO VOCÊ DESEJA RENOMEAR?\n CONSIDERE MAIÚSCULAS E MINÚSCULAS \n\n$extensões" 20 60 2> $r2 resp2=`cat $r2` Xdialog --yesno "NA TELA SEGUINTE VOCÊ IRA DIGITAR O NOVO NOME DOS ARQUIVOS, \n POREM NÃO ESCOLHA O MESMO NOME QUE JÁ EXISTA NA PASTA,\n POIS VOCÊ PODERÁ PERDER ALGUNS ARQUIVOS. \n DESEJA CONTINUAR?" 15 70  if [ "$?" = "0" ] then   Xdialog --inputbox "DIGITE O NOVO NOME DOS ARQUIVOS" 10 40 2> $r3   resp3=`cat $r3`   i=0   cd $resp1     if [ -z $resp1 ] || [ -z $resp2 ] || [ -z $resp3 ]     then     Xdialog --msgbox "DEVE-SE DIGITAR O NOVO NOME" 5 40     else       arquivos=`ls -trC1 *.$resp2`         for j in $arquivos           do           echo "RENOMEANDO $j PARA $resp3\_$i.$resp2"           mv $j $resp3\_$i.$resp2 2> /dev/null           i=`expr $i + 1`           done   Xdialog --msgbox "OS ARQUIVOS COM EXTENSÃO *.$resp2 DA PASTA:\n $resp1 \n FORAM RENOMEADOS COM SUCESSO" 10 70   fi fi rm $r1 $r2 $r3 } ##### MENU ##### MENU() { operacao=`Xdialog --title "UTILIDADES SHELL" --center --stdout --menubox \ "O que você deseja fazer? " \ 20 50 0 \ 1 "TRANSFORMAR PASTAS EM MAIÚSCULAS" \ 2 "TRANSFORMAR PASTAS EM MINÚSCULAS" \ 3 "TRANSFORMAR ARQUIVOS EM MAIÚSCULOS" \ 4 "TRANSFORMAR ARQUIVOS EM MINÚSCULOS" \ 5 "RETIRAR ESPAÇO DE ARQUIVOS E PASTAS" \ 6 "RENOMEAR" \ 7 "SAIR"` case $operacao in   1) PASTAS_VIRAR_MAIUSCULAS   ;;   2) PASTAS_VIRAR_MINUSCULAS   ;;   3) ARQUIVOS_VIRAR_MAIUSCULOS   ;;   4) ARQUIVOS_VIRAR_MINUSCULOS   ;;   5) ESPACO_RETIRAR   ;;   6) RENOMEAR   ;;   7) Xdialog --msgbox "ABORTANDO O SCRIPT" 5 40   ;;   *) Xdialog --msgbox "ATE A PROXIMA!" 5 40   ;; esac } MENU

Sobre Alexandre Pires

ORACLE OCS Goldengate Specialist, OCE RAC 10g R2, OCP 12C, 11g, 10g , 9i e 8i - Mais de 25 anos de experiência na área de TI. Participei de projetos na G&P alocado na TOK STOK, EDINFOR alocado na TV CIDADE "NET", 3CON Alocado no PÃO DE AÇUCAR, DISCOVER alocado na VIVO, BANCO IBI e TIVIT, SPC BRASIL, UOLDIVEO alocado no CARREFOUR e atualmente na ORACLE ACS atendendo os seguintes projetos: VIVO, CLARO, TIM, CIELO, CAIXA SEGUROS, MAPFRE, PORTO SEGURO, SULAMERICA, BRADESCO SEGUROS, BANCO BRADESCO, BASA, SANTANDER, CNJ, TSE, ELETROPAULO, EDP, SKY, NATURA, ODEBRESHT, NISSEI, SICREDI, CELEPAR, TAM, TIVIT, IBM, SMILES, CELEPAR, SERPRO,OKI,BANCO PAN, etc
Esse post foi publicado em LINUX e marcado . Guardar link permanente.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s