天天看點

grep 指令系列:如何在 UNIX 中根據檔案内容查找檔案grep 指令系列:如何在 UNIX 中根據檔案内容查找檔案

為了完成課程作業,我寫了很多 c 語言代碼并把它們儲存為 /home/user/c/*.c 和 *.h。那麼在 unix shell 視窗中我如何能通過字元串或者單詞(例如函數名 main())檔案内容來查找檔案呢?

grep 指令系列:如何在 UNIX 中根據檔案内容查找檔案grep 指令系列:如何在 UNIX 中根據檔案内容查找檔案

你需要用到以下工具:

[a] grep 指令 : 輸出比對模式的行。

[b] find 指令: 在目錄層次中查找檔案。

<a></a>

輸入以下指令:

<code>grep 'string' *.txt</code>

<code>grep 'main(' *.c</code>

<code>grep '#include&lt;example.h&gt;' *.c</code>

<code>grep 'getchar*' *.c</code>

<code>grep -i 'ultra' *.conf</code>

<code>grep -ir 'ultra' *.conf</code>

其中

-i : 忽略模式(比對字元串 valid、 valid、 valid )和輸入檔案(比對 file.c file.c file.c)的大小寫。

-r : 遞歸讀取每個目錄下的所有檔案。

在搜尋大量檔案的時候你可以輕松地高亮模式:

<code>$ grep --color=auto -ir 'getchar();' *.c</code>

你也許需要顯示檔案名和行号:

<code>$ grep --color=auto -irnh 'getchar();' *.c</code>

其中,

-n : 在輸出的每行前面添加以 1 開始的行号。

-h : 為每個比對列印檔案名。要搜尋多個檔案時這是預設選項。(lctt 譯注:-h 選項強制隐藏檔案名;另外 -l 和 -l 選項用于僅顯示比對/不比對的檔案名,而 -h 和 -h用于控制在顯示比對行前顯示/不顯示檔案名,注意區分。)

<code>$grep --color=auto -nh 'dir' *</code>

輸出樣例:

grep 指令系列:如何在 UNIX 中根據檔案内容查找檔案grep 指令系列:如何在 UNIX 中根據檔案内容查找檔案

圖 01: grep 指令顯示搜尋到的模式

你也可以使用 find 指令:

<code>$ find . -name "*.c" -print | xargs grep "main("</code>

本文來自雲栖社群合作夥伴“linux中國”

原文釋出時間為:2013-04-02.

繼續閱讀