
私の目標は、今月作成されたファイルをディレクトリに取得することです。
コマンドは正しいようですが、結果は表示されません。
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
かどうかを知る方法がないことです。はリテラルに一致しようとしています。代わりに、パラメータ展開を利用できます。d
awk
d
ls -l | awk "/$Date/ {print \$NF}"
とはいえ、注意すべき点が 2 つあります。
出力に表示される時間
ls -l
はタイムスタンプです。ファイルが最後に変更された時間であり、作成された時間ではありません。ファイルの作成時間はせいぜい信頼できない最悪の場合、利用できなくなります。-
find
代わりに、次のように使用します。dchirikovの回答。