我有以下命令LINUX +文件中查找單詞目錄下,但很快
find /var -type f -exec grep "param1" {} \; -print
使用此命令我可以找到任何文件中的參數1串在/ var
但時間,它需要因爲這很長。
我需要另一種可能的文件中查找字符串,但速度更快更然後我的例子
THX
耶爾
我有以下命令LINUX +文件中查找單詞目錄下,但很快
find /var -type f -exec grep "param1" {} \; -print
使用此命令我可以找到任何文件中的參數1串在/ var
但時間,它需要因爲這很長。
我需要另一種可能的文件中查找字符串,但速度更快更然後我的例子
THX
耶爾
find /var -type f | xargs grep "param1"
會稍微快一點(不產卵過程對每個文件)
grep -r "param1" /var
會略多,所以我認爲。
嘗試在大多數情況下也使用ack,即「better than grep」。其功能包括默認忽略典型垃圾文件(例如.svn或.git目錄,核心轉儲文件,備份文件),使用大量預定義文件類以及良好輸出格式的功能。
查看grep命令的-l選項以提高速度。爲了加快find命令使用:
find ... -exec sh -c '...' arg0 '{}' +
# grep ... -l: print files with matches, but stop scanning the file on the first match
grep -lsr "param1" /var
find /var -type f -exec sh -c 'grep -ls "param1" "[email protected]"' arg0 '{}' +
find /var -type f -exec sh -c 'grep -ls "$0" "[email protected]"' "param1" '{}' +
對不起,但它不工作 find/var -type f -exec sh -c'grep -ls「$ 0」「$ @」'「param1」'{}'+ find:missing argument to' - EXEC」 – yael 2010-06-03 12:46:40
您可以使用定位的索引(如果你不依賴於所添加的文件/刪除)
grep "param1" $(locate -r '^/var')
一些命令優化是有幫助的,但是我通過掠奪200萬個文件獲得的最大速度是使用SSD硬盤。相同的查詢花了1/5的時間。
但如果文件太「太多」,這可能會導致問題。此外,最好相應地使用'-print0'和'-0',並添加'-n'以防止預覽可能的問題。 – ShinTakezou 2010-06-03 11:18:05