Listar archivos por una fecha dada en un directorio concreto
Nombre: listaFecha
Autor:Alejandro Alcalde (algui91)
Lenguaje:Bash
Licencia:GPL
Propósito:Listar archivos por el dia, fecha o año que queramos.
Código:
#!/bin/bash
############################
#
# Script que buscara archivos en un directorio dado, para una fecha dada
# Autor: Alejandro Alcalde (algui91)
#
# Uso: listaFecha <directorio>
#
#
############################
function formateoFecha(){
aux=$1
case $2 in
dia) if [ ${#aux} -eq 1 ] ; then dia=`echo 0$aux` ; fi ;;
mes) if [ ${#aux} -eq 1 ] ; then mes=`echo 0$aux` ; fi ;;
esac
}
######################################
function buscar(){
case $3 in
dia) ls -la $1 | grep -E \ ????-??-$2\
resul=$?
;;
mes) ls -la $1 | grep -E *-$2-*
resul=$?
;;
year) ls -la $1 | grep -E $2-*-* ; echo $?
resul=$?
;;
esac
if [ $resul -eq 1 ] ; then echo "No hay archivos para esta fecha" ; fi
echo "Pulse enter" ; read -s
}
##########
## MAIN ##
##########
while [ true ] ; do
clear
if [ -d $1 ] && [ $# -eq 1 ] ; then
echo "Desea buscar por:"
echo "1-. Año."
echo "2-. Mes."
echo "3-. Día."
echo "4-. Salir"
echo -n "Opcion[1/2/3/4]: " ; read opc
case $opc in
1)
echo -n "Introduzca el año: " ; read year
if ! [ ${#year} -eq 4 ] ; then
echo -n "Introduzca 4 cifras para el año: " ; read year
fi
buscar $1 $year "year"
;;
2)
echo -n "Introduzca el mes: " ; read mes
formateoFecha $mes "mes"
buscar $1 $mes "mes"
;;
3)
echo -n "Introduzca el día: " ; read dia
formateoFecha $dia "dia"
buscar $1 $dia "dia"
;;
4) exit ;;
esac
fi
done
Ejemplos de uso:
listaFecha <directorio>
Desea buscar por:
1-. Año.
2-. Mes.
3-. Día.
4-. Salir
Opcion[1/2/3/4]:Comentarios: Este script lo hice mas que nada para ensayar con expresiones regulares, si creen que es una tonteria me lo dicen y lo quito Para listar archivos del usuario root ejecuten con sudo.
NOTA: me gustaria poder controlar que solo se introduzcan numeros en el script(ya que son fechas), pero por mas que lo intente no conseguí averiguar como hacerlo, se que se puede, pero no hallé el modo.