De uns meses para cá comecei a ter algumas dificuldades em manter todos os meus arquivos organizados. Desde que comecei a tirar fotos digitais eu armazeno todas, organizadas por eventos, assim como meus vídeos e demais arquivos pessoais. Sem contar que também tenho uma imensa quantidade de músicas organizadas por bandas, apresentações separadas por tipo, filmes por gênero, documentos etc.
Bom pessoal, agora chega de blá blá blá e vamos botar o script pra funcionar.
Espero colaborar com muitos usuários e desejo ótimo divertimento com seus arquivos e pastas! :-)
#!/bin/bash
# ##### DESENVOLVIDO POR ALEXANDRE MONTEIRO: alexandregms2@gmail.com # ## 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 #
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
[3] Comentário enviado por rrodrigues345 em 08/07/2010 - 20:08h
Olá, achei muito bacana o seu script, porém estou usando o ubuntu 10.04 e o xdialog "não existe" nele... tem algo que eu possa fazer para utilizar outro, que nao seja o xdialog? VAleu!!
[4] Comentário enviado por alexandregms em 16/07/2010 - 18:12h
Então, basta vc instalar o xdialog em seu Linux. Está escrito na primeira página deste artigo, basta vc digitar em seu prompt: apt-get install xdialog.
Caso ele não encontre o xdialog, atualize o seu source.list e em seguida execute 'apt-get update'.
Boa sorte!!!
[5] Comentário enviado por andersonpa em 15/09/2010 - 15:34h
Olá Alexandre,
seu script foi muito útil pra mim.
Ricardo,
também não conseguir instalar o xdialog no ubuntu 10.04, então tomei a liberdade de substituir o xdialog por zenity.
Um abraço.
#!/bin/bash
#
##### DESENVOLVIDO POR ALEXANDRE MONTEIRO: alexandregms2@gmail.com
#
## 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
#
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
resp1=$(zenity --text "SELECIONE O DIRETÓRIO EM QUE SE DESEJA TRANSFORMAR TODAS AS PASTAS EM MAIÚSCULO" --entry --title "Informe" " ");
#Xdialog --dselect ./ 30 75 2> $r1
#resp1=`cat $r1`
if [ -z $resp1 ]
then
#Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40
zenity --error --title "Error" --text="DEVE-SE ESCOLHER A PASTA"
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
zenity --info --text "AS PASTAS DO DIRETÓRIO\n $resp1 \nFORAM TRANSFORMADAS EM MAIÚSCULAS" --title="Operacao concluída"
fi
#rm $r1
MENU
}
##### 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`
resp1=$(zenity --title "Informe o Diretorio" --entry --text "SELECIONE O DIRETÓRIO EM QUE SE DESEJA TRANSFORMAR TODAS AS PASTAS EM MINÚSCULO");
if [ -z $resp1 ]
then
#Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40
zenity --error --title "Error" --text="DEVE-SE ESCOLHER A PASTA"
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
zenity --info --title "Concluido" --text="AS PASTAS DO DIRETÓRIO\n $resp1 \nFORAM TRANSFORMADAS EM MINÚSCULAS"
fi
#rm $r1
MENU
}
###### 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`
resp1=$(zenity --title "Informe o Diretorio" --entry --text "SELECIONE O DIRETÓRIO EM QUE SE DESEJA TRANSFORMAR OS ARQUIVOS EM MAIÚSCULOS");
if [ -z $resp1 ]
then
#Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40]
zenity --error --title "Error" --text="DEVE-SE ESCOLHER A PASTA"
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
zenity --info --title "Concluido" --text="OS ARQUIVOS DA PASTA\n $resp1 \nFORAM TRANSFORMADOS EM MAIÚSCULOS"
fi
#rm $r1
MENU
}
##### 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`
resp1=$(zenity --title "Informe o Diretorio" --entry --text "SELECIONE O DIRETÓRIO EM QUE \n SE DESEJA TRANSFORMAR OS ARQUIVOS EM MINÚSCULOS");
if [ -z $resp1 ]
then
#Xdialog --msgbox "DEVE-SE ESCOLHER A PASTA" 5 40
zenity --error --title "Error" --text="DEVE-SE ESCOLHER A PASTA"
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
zenity --info --title "Concluido" --text="OS ARQUIVOS DA PASTA\n $resp1 \nFORAM TRANSFORMADOS EM MINÚSCULOS"
fi
#rm $r1
MENU
}
##### 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`
resp1=$(zenity --title "Informe o Diretorio" --entry --text "SELECIONE O DIRETÓRIO EM QUE OS \nESPAÇOS DA PASTA E ARQUIVOS\nSERÃO SUBSTITUÍDOS POR '_'");
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
zenity --info --title "Concluido" --text="OS ESPAÇOS DO DIRETÓRIO\n $resp1 \nFORAM SUBSTITUÍDOS POR '_'"
else
#Xdialog --msgbox "ABORTANDO O SCRIPT" 5 30
zenity --info --title "Cancelado" --text="ABORTANDO O SCRIPT"
fi
#rm $r1
MENU
}
##### 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`
resp1=$(zenity --title "Informe o Diretorio" --entry --text "SELECIONE A PASTA ONDE ESTÃO OS ARQUIVOS");
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=$(zenity --title "Informe a extensão" --entry --text "QUAL EXTENSÃO VOCÊ DESEJA RENOMEAR?\n CONSIDERE MAIÚSCULAS E MINÚSCULAS \n\n$extensoes");
#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
zenity --question --text="DIGITAR O NOVO NOME DOS ARQUIVOS, PORÉM NÃO ESCOLHA O MESMO NOME QUE JÁ EXISTA NA PASTA, POIS VOCÊ PODERÁ PERDER ALGUNS ARQUIVOS.\nDESEJA CONTINUAR?"
if [ "$?" = "0" ]
then
#Xdialog --inputbox "DIGITE O NOVO NOME DOS ARQUIVOS" 10 40 2> $r3
#resp3=`cat $r3`
resp3=$(zenity --title "Informe" --entry --text "DIGITE O NOVO NOME DOS ARQUIVOS");
i=0
cd $resp1
if [ -z $resp1 ] || [ -z $resp2 ] || [ -z $resp3 ]
then
#Xdialog --msgbox "DEVE-SE DIGITAR O NOVO NOME" 5 40
zenity --error --title "Error" --text="DEVE-SE PREENCHER TODOS OS CAMPOS"
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
zenity --info --title "Concluido" --text="OS ARQUIVOS COM EXTENSÃO *.$resp2 DA PASTA:\n $resp1 \nFORAM RENOMEADOS COM SUCESSO"
fi
fi
#rm $r1 $r2 $r3
MENU
}
##### MENU #####
MENU()
{
operacao=$(zenity --entry --text "Menu\n
1. TRANSFORMAR PASTAS EM MAIÚSCULAS\n
2. TRANSFORMAR PASTAS EM MINÚSCULAS\n
3. TRANSFORMAR ARQUIVOS EM MAIÚSCULOS\n
4. TRANSFORMAR ARQUIVOS EM MINÚSCULOS\n
5. RETIRAR ESPAÇO DE ARQUIVOS E PASTAS\n
6. RENOMEAR\n
7. SAIR" --title "Menu Principal")
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) zenity --info --title "Exit" --text="Terminando a execução do script"
;;
*) zenity --info --title "Exit" --text="Terminando a execução do script"
;;
esac
}
MENU
[7] Comentário enviado por removido em 01/02/2011 - 16:46h
Tempos atrás usei algo parecido, mas por linha de comando, que acho menos traumatico (xdialog, zenity vai instalar e não instala)
E tinha um comando que trocava (na verdade eu mudei um que achei na net) hifen por espaço ou underscore por espaço, mas não lembro onde está esse script...
[8] Comentário enviado por alexandregms em 12/12/2011 - 18:36h
Pessoal, a interface gráfica para os scripts é algo que ainda não está muito padronizado nas distribuições (temos o dialog, Xdialog, zenity, Yad, etc). Também tive problemas para instalar o Xdialog no Ubuntu, em último caso, numa urgência vcs podem rodar direto pela linha de comando.
Pensei em fazer o mesmo script utilizando o YAD, do qual achei muito mais prático para instalar, mas estou com outras prioridades! Quem sabe ele sai do forno!
Abraços
[9] Comentário enviado por genlicos em 23/01/2016 - 16:36h
Boa tarde a todos;
Adorei o script e irá servir muito pra mim...
No entanto, fiz tudo conforme explicado e quando eu executo, tanto a forma disponível em download quanto a disponível nesse fórum, gera o seguinte erro:
$ ./utilidades_shell.sh
./utilidades_shell.sh: linha 179: Xdialog: comando não encontrado
./utilidades_shell.sh: linha 195: Xdialog: comando não encontrado
[10] Comentário enviado por samfr em 12/07/2016 - 06:42h
@genlicos
Eu acho que esse ano xdialog ja esta obsoleto.
"apt install xdialog
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package xdialog is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source"