03 1月 2008

[Linux] 搜尋資料夾底下 檔案內部文字

find "path name" -name "file name" -exec grep -H "search content" {} \;

find原本是用「檔案名稱」來搜尋在哪些地方有這些檔案,將這些路徑結果餵給grep後,就可以拿來搜尋檔案內部的文字片段。

Ex:
find ./kernel -name "*.c" -exec grep -H "main" {} \;
以上這段指令,是要搜尋./kernel底下所有的.c檔,內容含有"main"的地方。

find的參數:
  -name 要搜尋哪些檔名
  -exec utility name [argument...{} \;
    搜尋出的檔名 交給哪個執行檔(utility name)處理
    {} 會被find搜尋後的檔名路徑名稱所取代
    \; 代表exec的參數到此為止

grep的參數:
  -H 列出搜尋到的檔案名稱路徑

2 則留言:

布丁布丁吃布丁 提到...

太實用了!而且意外的速度其實也不會太慢呢!

補充推薦
find ./kernel -name "*.c" -exec grep -H "main" {} \; > /tmp/find_result.txt

這樣就可以把檢索儲存起來,方便一邊改程式一邊對照

Jar 提到...

其實直接用 grep -r "keyword" * 也可以