Estoy tratando de obtener el archivo de la fecha actual con el siguiente comando en HP-UX Unix:
$ ls -lrt ABC.LOG* |grep "`date +"%b %d"`"
Pero, me está dando el error:
ksh: : cannot execute
grep: can't open %d
¿Alguna sugerencia?
Respuesta aceptada:
El error proviene de citar los argumentos de grep
y el hecho de que los acentos graves no encajan muy bien:
grep "`date +"%b %d"`"
Esto se escribe mejor como
grep "`date +'%b %d'`"
… o incluso mejor,
grep "$(date +'%b %d')"
De hecho, con $(...)
en lugar de acentos graves, debería poder mantener las comillas dobles internas:
grep "$(date +"%b %d")"
Una alternativa al grepping de la salida de ls
sería hacer
find . -type f -name "ABC.LOG*" -ctime -1
Esto encontraría todos los archivos normales (-type f
) en el directorio actual cuyos nombres coincidan con el patrón dado y cuyo ctime sea menos de 24 horas desde la hora actual . El ctime de un archivo es el momento en que se realizó la última modificación de los datos o metadatos del archivo.
Sin embargo, esto no es exactamente equivalente a lo que estás tratando de lograr. Esto también se repite en subdirectorios.