Script de cópia (destino - origem) otimizado

Publicado por Alexandre Gonçalves Monteiro da Silva (última atualização em 07/09/2011)

[ Hits: 6.862 ]

Homepage: https://www.vivaolinux.com.br/~alexandre_gms

Download copia_pastas.sh




Pessoal, este script foi feito para economizar economizar a digitação do usuário e facilitar a busca de pastas.
Caso você queira copiar uma pasta para um determinado local, porém você não lembra exatamente o caminho, ou você precisa copiar determinado diretório e o caminho são trocentas pastas acima ou abaixo do seu diretório corrente.

O script funciona basicamente assim:
1) Digite a pasta que você quer copiar (caminho completo)
2) Digite apenas o nome da pasta destino (SOMENTE O NOME E NÃO O CAMINHO COMPLETO)
3) Caso a pasta que você digitou exista em mais de um local do Sistema, ele vai te listar todas, por exemplo, você digitou a pasta destino "bkp_old", ele listará todos os caminhos em que a pasta foi encontrada:

1 /opt/apache-tomcat/6.0.21/bkp_old
2 /etc/rc.d/bkp_old
3 /etc/appnet/conf/bkp_old
4 /var/log/rdm/bkp_old

Em seguida você digitará o numero do caminho desejado.

Após a cópia será exibida uma mensagem na tela de sucesso ou erro.

Outra opção do script é que o usuário é obrigado a digitar ambas as pastas (destino e origem), se os campos estiverem vazios, o script alertará o usuário.

Boas cópias!

  



Esconder código-fonte

#!/bin/bash

k=1
SAIDA1="pastas1.txt"
SAIDA2="pastas2.txt"

rm -f $SAIDA1 $SAIDA2 &> /dev/null

echo -e "\nQUAL PASTA VOCE DESEJA COPIAR?"
read pasta

echo -e "\nPARA ONDE VOCE DESEJA COPIAR A PASTA $pasta?"
echo -e "DIGITE SOMENTE O NOME DA PASTA (SEM O CAMINHO COMPLETO)\n"
read destino

if [ -z $pasta ] || [ -z $destino ]; then

        echo -e "\nOS 2 CAMPOS ACIMA DEVEM SER PREENCHIDOS\n"
        exit 1

fi

if [ ! -d $pasta ]; then

   echo -e "\n $pasta NAO EXISTE, FAVOR VERIFICAR O CAMINHO CORRETO!\n"
   exit 1

fi

find / -type d -iname *$destino* 2> /dev/null > $SAIDA1

if [ `cat $SAIDA1 | wc -l` -gt "1" ]; then

   echo -e "\nFOI LOCALIZADA MAIS DE 1 PASTA DE DESTINO, DIGITE O NUMERO DELA:\n"

   cat $SAIDA1 | while read line
   do

      echo "$k $line" >> $SAIDA2
      let k++

   done

   cat $SAIDA2
   read num

   if [ -z $num ]; then

      echo -e "\nVOCE DEVE ESCOLHAR UM NUMERO, EXECUTE NOVAMENTE!\n"
      exit 1

   fi

   pasta_correta=`grep ^$num $SAIDA2 | cut -d' ' -f2`
   cp -rvp "$pasta" "$pasta_correta" &> /dev/null
   if [ $? -eq 0 ]; then

      echo -e "\nPASTA $pasta COPIADA COM SUCESSO PARA $pasta_correta \n"

   else

      echo -e "\nERRO AO COPIAR A PASTA $pasta PARA $pasta_correta ---> VERIFICAR PERMISSOES!\n"

   fi

else

   cp -rvp `cat $SAIDA1` "$destino" &> /dev/null
   if [ $? -eq 0 ]; then

      echo -e "\nPASTA $pasta COPIADA COM SUCESSO PARA $destino \n"

   else

      echo -e "\nERRO AO COPIAR A PASTA $pasta PARA $destino ---> VERIFICAR PERMISSOES!\n"

   fi

fi

Scripts recomendados

Compactando arquivos em lote

Logs do daemontools - tradução de timestamp

burncd - programa para gravar ISOs

Configurar usuarios samba na boa sem dor de cabeça em modo texto

Minha solução para monitorar múltiplos termômetros no Slackware


  

Comentários
[1] Comentário enviado por lbleite76 em 12/09/2013 - 11:56h

Show , parabens pelo script !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts