Total, que este es el resultado:
#!/bin/bash
#Crear un script que distribuya los documentos de la carpeta Descargas en
#subcarpetas. Para ello, el script ha de crear las carpetas, si no existen:
#"Documentos" "Presentaciones" "Imagentes" "Videos" y mover correctamente
#los diferentes archivos de Descargas dando la posibilidad interactiva de
# - no mover sino borrar para cada archivo
# - Si no reconoce el tipo de archivo, pregunta al usuario a que carpeta lo
# quiere mover
#Declaramos todas las variables de texto que usaremos para evitar repeticiones innecesarias
elec="(S)alir del programa, (D)escomprimir, (B)orrar, (N)o mover o (M)over a"
elec2="indique si quiere (B)orrar, (N)o mover, o mover a (D)ocumentos,(P)resentaciones,(I)magenes, o (V)ideos o (S)alir"
err="Valor incorrecto, introduzca S, B, M o N"
err2="Valor incorrecto, introduzca S, B, D, P, V, I o N"
sal="Saliendo del Programa de Distribución de Ficheros por tipo"
prog="Programa diseñado por Carlos Robles Mirantes y modificado por Rubén Glez."
mov="ha sido movido a la carpeta"
bor="Se ha borrado"
dej="No se hace nada con el fichero"
#Comprobamos si existen los directorios destino, de no ser así los creamos
if [ -d ~/Documentos ]; then
echo " "
else
cd ~
mkdir Documentos
echo " "
fi
if [ -d ~/Presentaciones ]; then
echo ""
else
cd ~
mkdir Presentaciones
echo " "
fi
if [ -d ~/Videos ]; then
echo ""
else
cd ~
mkdir ~/Videos
echo " "
fi
if [ -d ~/Imagenes ]; then
echo ""
else
cd ~
mkdir ~/Imagenes
echo " "
fi
#Declaramos la función que nos permitirá tener siempre en pantalla el mensaje de bienvenida
#Declaramos el comportamiento del script ante las distintas opciones que teclearemos
function opciones () {
opc="A"
until [ $opc = "M" -o $opc = "B" -o $opc = "S" -o $opc = "N" ]; do
tipifica
echo Se recomienda mover $fich a $tipo
echo ""
echo ""
echo ""
menu
echo -e $elec $tipo
read opc
if [ $opc = "M" ]; then
mover
echo $fich $mov $tipo
clear
elif [ $opc = "B" ]; then
rm -r $fich
echo $bor $fich
clear
elif [ $opc = "S" ]; then
clear
echo $sal
echo $prog
exit
elif [ $opc = "N" ]; then
echo $dej $fich
else
echo $err
fi
done
}
#Declaramos donde vamos a mover los archivos
function mover () {
if [ $doc1 -gt 0 -o $doc2 -gt 0 -o $doc3 -gt 0 -o $doc4 -gt 0 ]; then
mv $fich ~/$tipo
elif [ $img1 -gt 0 -o $img2 -gt 0 -o $img3 -gt 0 -o $img4 -gt 0 ]; then
mv $fich ~/$tipo
elif [ $vid1 -gt 0 -o $vid2 -gt 0 -o $vid3 -gt 0 ]; then
mv $fich ~/$tipo
elif [ $pre1 -gt 0 -o $pre2 -gt 0 -o $pre3 -gt 0 ]; then
mv $fich ~/$tipo
fi
}
#Tipificamos los archivos
function tipifica () {
if [ $doc1 -gt 0 -o $doc2 -gt 0 -o $doc3 -gt 0 -o $doc4 -gt 0 ]; then
tipo=Documentos
elif [ $img1 -gt 0 -o $img2 -gt 0 -o $img3 -gt 0 -o $img4 -gt 0 ]; then
tipo=Imagenes
elif [ $vid1 -gt 0 -o $vid2 -gt 0 -o $vid3 -gt 0 ]; then
tipo=Videos
elif [ $pre1 -gt 0 -o $pre2 -gt 0 -o $pre3 -gt 0 ]; then
tipo=Presentaciones
fi
}
#Pintamos el menú para los archivos reconocidos por el programa
function menu () {
echo "*********************************************************************************"
echo " (M)over $fich a $tipo "
echo " (N)o mover $fich "
echo " (B)orrar $fich "
echo " (S)alir del programa "
echo "*********************************************************************************"
}
#Pintamos el menú para los archivos que el programa no reconoce
function menu2 () {
echo "*********************************************************************************"
echo " (D) Para mover $fich a Documentos "
echo " (P) Para mover $fich a Presentaciones "
echo " (V) Para mover $fich a Videos "
echo " (I) Para mover $fich a Imagenes "
echo " (N) Para dejar $fich en el directorio actual "
echo " (S) Para salid de la aplicación "
echo "*********************************************************************************"
}
function menu3 () {
echo "*********************************************************************************"
echo " (D) Para descomprimir $fich Documentos "
echo " (P) Para descomprimir $fich Presentaciones "
echo " (V) Para descomprimir $fich Videos "
echo " (I) Para descomprimir $fich Imagenes "
echo " "
echo " (S) Para salir de la aplicación "
echo "*********************************************************************************"
}
#Comprobamos si existe la carpeta Descargas, de no ser así examinaremos el directorio actual
if [ -d ~/Escritorio/Descargas ]; then
cd ~/Escritorio/Descargas
echo El programa comprobará el directorio Descargas
else
echo El programa comprobará el directorio Actual
fi
#Comienza el bucle, indicamos al programa como va a tener que actuar con cada uno de los archivos del directorio en cuestión
for fich in *
do
#Declaramos las variables, que contendrán el número de archivos de cada tipo
doc1=`file $fich | cut -d: -f1 | grep -c '.doc$'`
doc2=`file $fich | cut -d: -f1 | grep -c '.docx$'`
doc3=`file $fich | cut -d: -f1 | grep -c '.pdf$'`
doc4=`file $fich | cut -d: -f1 | grep -c '.odt$'`
img1=`file $fich | cut -d: -f1 | grep -c '.jpg$'`
img2=`file $fich | cut -d: -f1 | grep -c '.jpeg$'`
img3=`file $fich | cut -d: -f1 | grep -c '.png$'`
img4=`file $fich | cut -d: -f1 | grep -c '.gif$'`
vid1=`file $fich | cut -d: -f1 | grep -c '.mpg$'`
vid2=`file $fich | cut -d: -f1 | grep -c '.wmv$'`
vid3=`file $fich | cut -d: -f1 | grep -c '.mpeg$'`
pre1=`file $fich | cut -d: -f1 | grep -c '.psx$'`
pre2=`file $fich | cut -d: -f1 | grep -c '.odp$'`
pre3=`file $fich | cut -d: -f1 | grep -c '.sti$'`
#Indicamos al script lo que tiene que hacer con cada tipo de archivo reconocido, es decir que tiene que hacer cuando las vari#ables sean mayores que 0
if [ $doc1 -gt 0 -o $doc2 -gt 0 -o $doc3 -gt 0 -o $doc4 -gt 0 ]; then
opciones
elif [ $img1 -gt 0 -o $img2 -gt 0 -o $img3 -gt 0 -o $img4 -gt 0 ]; then
opciones
elif [ $vid1 -gt 0 -o $vid2 -gt 0 -o $vid3 -gt 0 ]; then
opciones
elif [ $pre1 -gt 0 -o $pre2 -gt 0 -o $pre3 -gt 0 ]; then
opciones
else
#Indicamos al script lo que tiene que hacer con los ficheros que no reconoce
opc="A"
until [ $opc = "N" -o $opc = "D" -o $opc = "B" -o $opc = "P" -o $opc = "I" -o $opc = "V" -o $opc = "S" ]; do
echo no se reconoce el tipo de archivo de $fich
echo -e $elec2
echo ""
echo ""
echo ""
menu2
read opc
if [ $opc = "B" ]; then
rm -r $fich
echo $bor $fich
clear
elif [ $opc = "D" ]; then
mv $fich ~/Documentos
echo $fich $mov Documentos
clear
elif [ $opc = "I" ]; then
mv $fich ~/Imagenes
echo $fich $mov Imagenes
clear
elif [ $opc = "P" ]; then
mv ~/Presentaciones
echo $fich $mov Presentaciones
clear
elif [ $opc = "V" ]; then
mv $fich ~/Videos
echo $fich $mov Videos
clear
elif [ $opc = "S" ]; then
clear
echo $sal
echo $prog
exit
elif [ $opc = "N" ]; then
echo $dej $fich
clear
else
echo $err2
fi
done
fi
done
menu3
read opc
if [ $opc = "D" ]; then
tar -zcvf documentos.tar.gz /home/alumnot/Documentos
echo COMPRIMIDA LA CARPETA DOCUMENTOS
clear
elif [ $opc = "P" ]; then
tar -zcvf presentaciones.tar.gz /home/alumnot/Presentaciones
echo COMPRIMIDA CARPETA PRESENTACIONES
clear
elif [ $opc = "V" ]; then
tar -zcvf videos.tar.gz /home/alumnot/Videos
echo COMPRIMIDA LA CARPETA VIDEOS
clear
elif [ $opc = "I" ]; then
tar -zcvf imagenes.tar.gz /home/alumnot/Imagenes
echo COMPRIMIDA LA CARPETA IMAGENES
clear
elif [ $opc = "S" ]; then
clear
echo $sal
echo $prog
exit
fi
echo $sal
echo $prog
No hay comentarios:
Publicar un comentario