grep遞迴查詢子目錄

MudooT發表於2013-12-07

想要在各種檔案裡面找一個指定的文字,本來的方法太土了,在網上搜了一下,發現個好的方法,不過也有些問題。原文如下:

第一個,這個是看別人指令碼的,配合find實現,-maxdepth指定深度,如果查詢到底,就把-maxdepth刪掉
find /var/log/httpd/* -maxdepth 1 -type f -mtime +14 -print | egrep '.*\.gz$' | xargs -r /bin/rm

第二個,也是別人指令碼,粗糙點,原先我是用這個來查詢當前目錄的,修改為`ls -R`,可以遞迴查目錄
for i in `ls -R`;do grep rpm $i; echo $i; done;

第三個,比較好用啊,grep當前目錄和子目錄裡檔案的內容

grep Notifications `find ./*`

原文地址:http://www.187299.com/archives/1079

第三種方法雖然簡單,但是如果find的結果太多會導致出現引數列表過長。

所以還是第一種方法最好好用,簡單來說就是

find . -name "*" | xargs grep "Notifications

等同於

grep Notifications `find ./*`

 

但可以避免引數列表過長

關於xargs詳細資料可以參見wiki:http://zh.wikipedia.org/wiki/Xargs

相關文章