GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cotizaciones dentro de Backticks dentro de cotizaciones en Ksh?

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.


Linux
  1. ¿Por qué la tilde (~) no se expande dentro de comillas dobles?

  2. ¿Comodines dentro de las comillas?

  3. Grep:¿Memoria agotada?

  4. Sustitución de comandos usando “?

  5. Corte/Grep Y Df -h?

Grep Regex:una guía completa

Cómo excluir en Grep

Expresiones regulares en Grep (Regex)

Instalación de Seafile 6.3.2 dentro de ISPConfig 3.1

Comando Grep en Linux/UNIX

Cómo grep \n en el archivo