Awk が結果をレンダリングしない

Awk が結果をレンダリングしない

私の目標は、今月作成されたファイルをディレクトリに取得することです。

コマンドは正しいようですが、結果は表示されません。

Date=`date '+%b'`

echo $Date
Oct

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

答え1

次のように使用してください:

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

説明はここ

findしかし、スクリプト内で使用する方が良いかもしれません。

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

awkの代わりにクラシックをお持ちの場合gawk:

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

答え2

ここでの問題は、パターンの内側がその名前の変数を表すことを意図しているawkかどうかを知る方法がないことです。はリテラルに一致しようとしています。代わりに、パラメータ展開を利用できます。dawkd

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

とはいえ、注意すべき点が 2 つあります。

関連情報