Normalmente la date +%d
da la salida 08
para la fecha actual, 10/08/2017. Pero cuando hago ls -lrt
en una ruta, el formato de fecha es como Oct 8 15:03
, entonces, ¿cómo obtengo los archivos de la fecha actual?
Estoy usando el comando
ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'
pero no me da el archivo de la fecha de hoy (08/10/2017) aunque me da la salida correcta para las fechas 10 - 31 de cualquier mes.
Respuesta aceptada:
Esto es hacer un poco de trampa, pero funciona.
Primero cree un archivo de referencia vacío con una marca de tiempo específica, a saber, medianoche:
touch -d "$(date +%FT00:00:00)" /tmp/midnight
Luego busque archivos que sean más nuevos que este archivo:
find . -type f -newer /tmp/midnight
Si quieres ls
-como la salida de find
en lugar de solo los nombres de ruta:
find . -type f -newer /tmp/midnight -ls
Si desea encontrar archivos que coincidan con el patrón XYZ.LOG*
:
find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls
Si tiene GNU find
, puede omitir el archivo temporal y usar
find . -type f -newermt 0
para obtener archivos modificados desde la medianoche.
Relacionado:¿Por qué *no* analizar `ls`?