GNU/Linux >> Linux Esercitazione >  >> Linux

Quotes Inside Backticks Inside Quotes In Ksh?

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.


Linux
  1. Perché The Tilde (~) non si espande all'interno di virgolette doppie?

  2. Caratteri jolly all'interno delle citazioni?

  3. Grep:Memoria esaurita?

  4. Grep -v Comportamento imprevisto?

  5. Taglia / Grep e Df -h?

Grep Regex:una guida completa

Come escludere in Grep

Espressioni regolari in Grep (Regex)

Installazione di Seafile 6.3.2 all'interno di ISPConfig 3.1

Comando Grep in Linux/UNIX

Usando grep vs awk