Sto cercando di ottenere il file della data corrente con il seguente comando in HP-UX Unix:
$ ls -lrt ABC.LOG* |grep "`date +"%b %d"`"
Ma mi sta dando l'errore:
ksh: : cannot execute
grep: can't open %d
Qualche suggerimento?
Risposta accettata:
L'errore deriva dalla citazione degli argomenti di grep
e il fatto che i backtick non nidificano molto bene:
grep "`date +"%b %d"`"
Questo è meglio scritto come
grep "`date +'%b %d'`"
… o anche meglio,
grep "$(date +'%b %d')"
Infatti, con $(...)
invece dei backtick, dovresti essere in grado di mantenere le virgolette interne:
grep "$(date +"%b %d")"
Un'alternativa al grepping dell'output di ls
sarebbe da fare
find . -type f -name "ABC.LOG*" -ctime -1
Questo troverebbe tutti i file normali (-type f
) nella directory corrente i cui nomi corrispondono allo schema dato e il cui ctime è meno di 24 ore dall'ora corrente . Il ctime di un file è il momento in cui è stata apportata l'ultima modifica ai dati o ai metadati del file.
Tuttavia, questo non è esattamente equivalente a ciò che stai cercando di ottenere. Questo ricorre anche nelle sottodirectory.