Grep
在進行文件搜尋時將 ls 變數傳遞給 grep 僅在目錄內有效
我正在執行一個命令,用於在文件夾中查找最新文件,然後對匹配模式的內容進行 grep。這是顯示我遇到的問題的命令流。
root@backup /]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)" /bin/grep: <file_name>: No such file or directory [root@backup /]# cd /var/log/folder/ [root@backup file_folder]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)" sucessfully completed.
在第一個命令中,它找到了文件,但隨後說沒有這樣的文件或目錄。奇怪的。然後,如您所見,我在實際文件夾中執行了相同的命令,並且它起作用了。我的變數具有絕對路徑,所以這裡發生了什麼?我檢查了任何可能干擾的 grep 別名,但沒有發現。如果我在使用變數之外單獨執行命令,它可以工作並且它可以在文件夾之外工作。(正如我所料)
[root@backup /]# grep -w 'sucessfully completed' /var/log/folder/file sucessfully completed.
第一部分中缺少文件的目錄名,請嘗試
grep -w 'sucessfully completed.' "/var/log/folder/$(ls -1rt /var/log/folder | tail -n1)"
不要嘗試…除非 /var/log/folder/ 中沒有目錄
grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder/* | tail -n1)"