• La ignorancia es la mayor de las cegueras, y creer que lo sabes todo la peor de las desgracias
  • Es absurdo dividir a la gente en buena y mala. La gente es tan sólo encantadora o aburrida
  • La definición de la locura es continuar haciendo la misma cosa, una y otra vez, y esperar resultados diferentes
  • Sé que la única forma en la que puedo mostrar mi inteligencia al tratar con tontos es no mezclándome con ellos

domingo, 12 de junio de 2011

Script 2nda parte

Buenos días, con el afán de ponerme al día en esta asignatura y esperando la indulgencia del profesor por el retraso, expongo el ejercicio práctico conjunto con Carlos del Castillo sobre el script de Carlos Robles. Ante tal exceso de 'Carlos' en este punto y considerando la divergencia de los horarios entre mis compañeros y yo, me he visto a realizar variaciones por mi cuenta tanto sobre el original como sobre la posterior modificación.

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