kshの逆引用符内の引用符

kshの逆引用符内の引用符

HP-UX Unixでは、次のコマンドを使用してファイルの現在の日付を取得しようとします。

$ ls -lrt ABC.LOG* |grep "`date +"%b %d"`"

ただし、エラーが発生します。

ksh: : cannot execute
grep: can't open %d

どんな提案がありますか?

ベストアンサー1

エラーは、パラメータへの参照grepとバックティックがうまくネストされていないという事実で発生します。

grep "`date +"%b %d"`"

これは次のように書く方が良いです。

grep "`date +'%b %d'`"

...またはより良い、

grep "$(date +'%b %d')"

実際、$(...)内部二重引用符は保持できますが、逆引用符は保持できません。

grep "$(date +"%b %d")"

grep出力の別のオプションはls次のとおりです。

find . -type f -name "ABC.LOG*" -ctime -1

-type f現在のディレクトリで、指定されたパターンとctime()と一致する名前を持つすべての一般的なファイルを見つけます。現在時刻から24時間以内。ファイルのctimeは、ファイルデータまたはメタデータが最後に変更された時刻です。

しかし、それはあなたが達成したいものとまったく同じではありません。これはサブディレクトリでも繰り返されます。

おすすめ記事