alexandregms
(usa Ubuntu)
Enviado em 06/08/2011 - 22:23h
Cara, resolvi criar este script pra você, pois sei que isso pode ser útil pra outros ninjas do opensource.
Explicando: Primeiramente ele vai te perguntar qual pasta você deseja copiar, no próximo passo ele te perguntará o caminho do qual vc quer enviar (insira o caminho completo).
Caso você digitou a pasta "controles" e no sistema possui a pasta controles2 e controles7 todas serão listadas e numeradas para você escolher qual delas quer copiar.
Exemplo:
1 /tmp/controles
2 /opt/controles2
3 /usr/controles7
Agora você digita: 1, 2 ou 3 e a pasta será copiada para este caminho.
Caso ocorra algum problema na cópia o script enviará a mensagem "Erro ao copiar a pasta, verificar permissoes". No caso positivo da cópia imprimirá:
"Pasta <nome_pasta> copiada com sucesso para <caminho>".
Também inseri neste script a condição para o usuário ser obrigado a digitar a pasta e o caminho, se estiverem em branco o script finaliza automaticamente e o usuario recebe a mensagem:
"Os 2 campos acima devem ser preenchidos"
Bom divertimento!
#!/bin/bash
k=0
SAIDA1="/tmp/pastas1.txt"
SAIDA2="/tmp/pastas2.txt"
DELETE_FILES()
{
rm -f $SAIDA1 $SAIDA2
}
echo "Qual pasta vc deseja copiar?"
read pasta
echo "Para onde voce deseja mover a pasta $pasta?"
read destino
if [ -z $pasta ] || [ -z $destino ]; then
echo "Os 2 campos acima devem ser preenchidos"
exit 1
fi
find / -type d -iname *$pasta* 2> /dev/null > $SAIDA1
if [ `cat $SAIDA1 | wc -l` -gt "1" ]; then
echo -e "\nFoi localizada mais de 1 pasta! 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 "Voce deve escolhar um numero. Execute novamente!"
exit 1
fi
pasta_correta=`grep ^$num $SAIDA2 | cut -d' ' -f2`
cp -rvp "$pasta_correta" "$destino" > /dev/null
if [ $? -eq 0 ]; then
echo "Pasta $pasta_correta copiada com sucesso para $destino"
else
echo "Erro ao copiar a pasta, verificar permissoes"
fi
DELETE_FILES
else
cp -rvp `cat $SAIDA1` "$destino" > /dev/null
if [ $? -eq 0 ]; then
echo "Pasta $pasta copiada com sucesso para $destino"
else
echo "Erro ao copiar a pasta, verificar permissoes"
fi
DELETE_FILES
fi