Quoting
反引號內的引號 ksh 內的引號內
我正在嘗試在 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 是最後一次修改文件數據或元數據的時間。不過,這並不完全等同於您要實現的目標。這也遞歸到子目錄中。