Script de cópia (destino - origem) otimizado
Publicado por Alexandre Gonçalves Monteiro da Silva (última atualização em 07/09/2011)
[ Hits: 6.878 ]
Homepage: https://www.vivaolinux.com.br/~alexandre_gms
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!
#!/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
ebook-cli - gerencia livros digitais entre PC e leitores ebooks
Backup mysqldump usando Shell Script
getgazette - script para baixar a Linux Gazette
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Configurando static ipv6 em placa de rede eth0[DUVIDA] (1)
Sistema da Coréia do Norte - Red Star OS (59)