Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # !/bin/bash
- # Proyecto Final Laboratorio - Buscador de ficheros
- # Sergio Esteban Tarrero
- # Proyecto ejecutado en CentOS 7 con interfaz gráfica
- # Variables
- DIRECTORIO=$1
- OPCION=$2
- OPCIONEXTRA=$3
- ACCION=$4
- # Usamos una flag para que nos haga un \n entre los archivos que se sacan por pantalla
- let FLAG=0
- #función principal
- # MENÚ
- function menu ()
- {
- echo -e "Forma de usar el programa: "
- echo -e " <directorio> <opción de búsqueda> <opción extra> <acción> \n"
- echo -e "Ejemplo: /home/sergio/downloads/pruebas -t -d -print"
- echo -e "IMPORTANTE: Todos los comandos introducidos deben estar escritos en minúsculas"
- }
- # LISTAR --> pone en una lista los ficheros
- function listar ()
- {
- if [[ ${FLAG} = 1 ]]
- then
- lista+=(\n)
- fi
- lista+=${FICHERO}
- }
- # Primera comprobación para ver si existe el directorio introducido
- if [[ ! -r ${DIRECTORIO} ]]
- then
- echo -e "ERROR: El directorio introducido no existe, pruebe otro \n"
- menu # vuelve al menú principal
- else
- # Switch Case de posibles elecciones de OPCIÓN
- case "${OPCION}" in
- "-t") # Caso buscar por TIPO DE ARCHIVO
- case "${OPCIONEXTRA}" in
- "-f") # Mira solo los ficheros normales, (Ej: .txt y fotos)
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ -r "${FICHERO}" && -f "${FICHERO}" ]]
- then
- listar
- fi
- done
- ;;
- "-d") # Mira solo los directorios
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ -r "${FICHERO}" && -d "${FICHERO}" ]]
- then
- listar
- fi
- done
- ;;
- "-") # Muestra todo
- for fichero in "${DIRECTORIO}"/*;
- do
- listar
- done
- ;;
- *) # Caso de error
- echo -e "ERROR: Solo se pueden introducir los comandos -f, -d y -"
- menu
- ;;
- esac
- ;;
- "-n") # Caso buscar por NOMBRE DE ARCHIVO
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ "${FICHERO}" == *"${OPCIONEXTRA}"* ]]
- then
- listar
- fi
- done
- ;;
- "-p") # Caso buscar por PERMISOS DE ARCHIVO
- case "${OPCIONEXTRA}" in
- "-x") # Esribe que lea
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ -x "${FICHERO}" && -f "${FICHERO}" ]] || [[ -x "${FICHERO}" && -d "${FICHERO}" ]]
- then
- listar
- fi
- done
- ;;
- "-r") # Poder leerlo
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ -r "${FICHERO}" && -f "${FICHERO}" ]] || [[ -r "${FICHERO}" && -d "${FICHERO}" ]]
- then
- listar
- fi
- done
- ;;
- "-w") # Se puede escribir
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ -w "${FICHERO}" && -f "${FICHERO}" ]] || [[ -w "${FICHERO}" && -d "${FICHERO}" ]]
- then
- listar
- fi
- done
- ;;
- *) # Demás opciones
- echo -e "ERROR: Solo se pueden introducir los comandos -t, -n y -w"
- ;;
- "-c") # Caso buscar por TODO, hay que comprobarlo manualmente
- for fichero in "${DIRECTORIO}"/*;
- do
- if [[ -r "${FICHERO}" && -f "${FICHERO}" && -s "${FICHERO}" ]]
- then
- grep -c "${OPCIONEXTRA}" "${FICHERO}" &>/dev/null
- if [[ $? -eq 0 ]]
- then
- listar
- fi
- fi
- done
- ;;
- *) # Todo lo demás
- echo -e "ERROR: Solo se pueden introducir los comandos -x, -r, -p y -c"
- ;;
- esac
- case "${ACCION}" in
- "-print" | "") # Imprimir la búsqueda realizada
- shift # Shift mueve el nº de los argumentos
- echo -e "${lista[@]}"
- ;;
- "-exec") # Ejecutar el fichero después de buscarlo
- while [[ $# -gt 4 ]]
- do
- args+=${5}
- shift # Shift mueve el nº de los argumentos
- done
- echo -e "NO FUNCIONA"
- ;;
- *) # Todas las demás opciones
- echo -e "ERROR:ERROR: Solo se pueden introducir los comandos -print o -exec \n"
- ;;
- esac
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement