2012-07-24 135 views
41

使用正常的grep命令,有一個--exclude選項(此處詳細介紹:Use grep --exclude/--include syntax to not grep through certain files),可讓您在進行擦除時忽略特定文件。如何從ack(ack-grep)中排除特定文件?

Ack的--type選項可以處理95%的您希望排除文件的情況,但它不會處理排除特定文件的情況(據我所知)。我有一個編譯後的JS文件,其中包含其他每個JS文件的內容(在一行中),所以每當我爲任何內容尋找時,我都會收回該巨大編譯文件的全部內容。

我討厭不得不放棄對ack並回到grep這個,但它真的是惱人。請有人告訴我,有一種方法可以從ack搜索中排除特定的文件。

回答

11

不,ack 1.x不會讓你排除單個文件。在ack 2.0,你可以。 ack 2.0 當前在其第一個字母 現在是當前推薦的ack版本。

至於你的具體案例的縮小Javascript文件,你使用的是什麼版本的ack? ack 1.96應忽略基於擴展名的縮小JavaScript。如果擴展檢查不起作用,那麼您可能會自行確認,因爲它是一個單獨的Perl程序。你可以破解is_searchable函數。

在ack 2.0中,我們正在考慮忽略任何超過500個字符的行,因爲它顯然不是源代碼。

您可能還想加入我們的ack-users郵件列表。我們非常敏感。

+0

事實上,我的下一站將是ack郵件列表,但我想我會在這裏首先檢查以確保我沒有錯過某些明顯的東西:-)謝謝Andy。 – machineghost 2012-07-24 21:48:00

+0

P.S.我選擇了我編譯的JS文件的文件名,所以目前它只是built.js。我會嘗試將它重命名爲built.min.js,看看是否有幫助。 – machineghost 2012-07-24 21:49:24

84

要忽略使用ACK 2.0單個文件,對 - 忽略文件標誌提供一個過濾器規格:

--ignore-file=is:cljout.js

+1

什麼是'在這裏做'? – 2014-01-15 14:44:19

+3

準確文件名匹配。 http://beyondgrep.com/documentation/ack-2.04-man.html#is_filename – 2014-02-11 18:59:24

+4

這適用於我的文件名,但不是如果我想給一個特定的文件(即路徑和文件名)。 – tremby 2014-03-07 18:34:51

1

還不錯知道與ack2.0,你可以指定這些選項如果您必須經常過濾文件,則爲.ackrc file

2

如果您運行的是ack --create-ackrc,它會輸出一大堆用於縮小javascript,css和像node_modules和.git這樣的常見文件的預設。很有用!如果要將此保存到.ackrc運行

ack --create-ackrc >> ~/.ackrc 

,然後刪除你不從該文件需要

# minified Javascript 
--ignore-file=match:/[.-]min[.]js$/ 
--ignore-file=match:/[.]js[.]min$ 

這裏是縮小的JS選項。

相關問題