2012-01-20 40 views
1

我有一個項目的大代碼庫,我試圖通過emacs標籤使其可搜索。所以我進入主目錄,我嘗試使用這個命令來生成標籤:使用find命令來創建ctags(代碼導航)

find . -name *.[chsS] | xargs etags - 

但是,我得到的答覆「查找:不匹配」。

當我只是自己輸入「find」命令時,它會列出所有代碼文件和子目錄中我想標記的更多代碼文件。

我該如何做這項工作?爲了說清楚,我希望能夠使用emacs M-。和M- *來瀏覽一個大型倉庫中的代碼標籤。

非常感謝。

+7

嘗試用單引號將名稱括起來,這樣shell就不會將星形解釋爲通配符:find。 -name'*。[chsS]'| xargs etags -' –

+1

或反引號找到。 -name \ *。[chsS] | xargs etags -' – Daimrod

+0

你們真棒謝謝 – JDS

回答

2

我打電話shannanigans你的要求,這一工作:

find . -name *.[chsS] 

在這裏,你的交互shell將展開「* [CHSS。」到文件列表,並第一個將被接受的「名稱」參數。但是find會嘗試將第二個文件解釋爲一個選項,並且它不會有效。

這裏的教訓是引用通配符來查找帶有單引號,雙引號或反斜槓的通配符。

+0

+ 1用於調用shannanigans :) –

+0

這種*可以工作的方式是,當glob不匹配任何內容時,可以配置一些shell以通過glob作爲參數。所以在這個命令運行在不包含.c,.h,.s,.S文件的目錄中的情況下 – stew