Quoting

反引號內的引號 ksh 內的引號內

  • May 28, 2018

我正在嘗試在 HP-UX Unix 中使用以下命令獲取目前日期的文件:

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

但是,它給了我錯誤:

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

有什麼建議麼?

該錯誤源於對參數的引用grep以及反引號不能很好地嵌套的事實:

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

這最好寫成

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

…甚至更好,

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

實際上,$(...)您應該能夠保留內部雙引號,而不是反引號:

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

grepping 輸出的另一種方法ls

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

這將-type f在目前目錄中查找名稱與給定模式匹配且 ctime小於目前時間 24 小時的所有正常文件 () 。文件的 ctime 是最後一次修改文件數據或元數據的時間。

不過,這並不完全等同於您要實現的目標。這也遞歸到子目錄中。

引用自:https://unix.stackexchange.com/questions/387246