grep不尋找隱藏檔案夾的方法

來源:互聯網
上載者:User

預設的grep會搜尋所有檔案,包括隱藏檔案夾下的檔案。

例如,使用如下命令搜尋MediaButton字串,搜尋結果包含隱藏檔案夾下的檔案。

grep -nr MediaButton *

如果是用svn管理的代碼,每個檔案夾下都有一個.svn的隱藏檔案夾,包含對代碼版本的控制資訊,日積月累會越來越龐大。所有如果只是預設搜尋的話,很多搜尋結果都是svn目錄下的,對我們來說,是沒有價值的內容;而且還會耗費很多時間。

grep的--exclude-dir=參數就是為了排除某個目錄的,即不包含等號後面的目錄,所以我們可以利用此參數去掉.svn的隱藏目錄。

--exclude-dir=參數的用法如下:

1. If you have GNU Grep, it should work like this:

grep --exclude-dir=".svn"

例如:尋找目前的目錄以及子目錄下所有包含"MediaButton"字串的代碼並列印行號

grep -nr --exclude-dir=".svn" MediaButton *

或者

grep -nr --exclude-dir=\.svn MediaButton *

--exclude-dir=後面要排除的目錄用雙引號括起來或者直接接目錄名都可以,但是特殊字元必須用轉義符表示,例如".svn"中的"."。

2.If happen to be on a Unix System without GNU Grep, try the following:

這種方式是使用管道進行雙層“過濾”,其中第二次grep使用了-v選項,即逆向匹配,列印出不匹配的行

grep -R "whatever you like" *|grep -v "\.svn/*" 

3. 如果每次都輸入--exclude-dir=參數,是不是很慢還容易出錯,降低效率呢?

不過不用擔心,我們可以把--exclude-dir=參數通過加入設定檔 ~/.bashrc (這是bash的目前使用者設定檔)
的方法來簡化操作,提高效率。

在~/.bashrc檔案的末尾添加以下命令:

export GREP_OPTIONS="--exclude-dir=\.svn" 

然後儲存,執行source ~/.bashrc或者. ~/.bashrc,使修改起作用。

然後搜尋時,執行以下命令即可:

grep -nr MediaButton *

這樣預設就會載入GREP_OPTIONS選項,不搜尋.svn目錄。

需要注意的是,GREP_OPTIONS這個關鍵詞不能修改為其他的,否則系統就不會認為是grep的一個選項參數了。

參考:

http://stackoverflow.com/questions/1491514/exclude-svn-directories-from-grep

http://hi.baidu.com/jasonlyy/item/6a9594e7438e97a1c00d755c

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.