我需要在整個Linux文件系統中找到一個字符串,並使用grep在文件系統中查找此字符串的所有實例。我得到了兩種結果:一種來自我的/.bash_history
,另一組來自proc
目錄。很明顯,答案在於某種過程。讀取/ proc中的虛擬文件內容
的/proc
結果看起來是這樣的:
Binary file /proc/12345/task/12345/cmdline matches
當我嘗試導航到目錄12345,它不存在。我在redhat手冊中讀過/ proc文件系統中的文件往往是虛擬的。我猜測這個過程可能在grep完成搜索的時候結束了,我導航到了相應的目錄。 有沒有一種方法可以在與grep相同的命令中打印進程的內容?在這種情況下,它返回兩個結果。我如何閱讀每個結果的內容? 謝謝!
編輯:我以前grep -rs "*string_name*" /
來查找字符串
通常,您不想跨越文件系統邊界。由於'grep -r'不能執行此操作,請改用'find/-xdev -type f -exec grep somestring {} +'。還要注意,盲目使用'grep -a'可能會弄亂你的終端。 – o11c
'{}'和'+'是什麼意思? – tinkuge
'{}'表示「替換爲找到的任何文件」找到「。 '+'是exec所特有的,意思是「exec與多個文件在一起」,而'''表示「exec每個文件一次」 - 在可能的情況下,通常應該使用'+',因爲'fork + exec'相對較貴。 – o11c