Awk liefert kein Ergebnis

Awk liefert kein Ergebnis

Mein Ziel ist es, die im aktuellen Monat erstellte Datei in einem Verzeichnis zu erhalten.

Der Befehl scheint korrekt zu sein, liefert aber kein Ergebnis:

Date=`date '+%b'`

echo $Date
Oct

ls -l | awk -v d="$Date" '/d/ {print $NF}'

Antwort1

Sie sollten es folgendermaßen verwenden:

ls -l | awk -v d="$Date" '$0 ~ d {print $NF}'

Erklärung istHier

Aber vielleicht ist es besser, es findin Ihrem Skript zu verwenden.

find . -maxdepth 1 -type f -daystart -ctime -`date "+%d"`

Wenn Sie awkstattdessen klassisch haben gawk:

find * -prune -type f -cmin -`date '+%d %H %M' | awk '{print ($1*24+$2)*60+$3}'`

Antwort2

Das Problem hier ist, dass awkes keine Möglichkeit gibt, zu erkennen, dass das dMuster die Variable mit diesem Namen darstellen soll: awkversucht, ein Literal abzugleichen d. Sie können stattdessen die Parametererweiterung verwenden:

ls -l | awk "/$Date/ {print \$NF}"

Dennoch sind zwei Dinge zu beachten:

verwandte Informationen