Shell

如何在 linux 的目前目錄下找到 .h、.c 和 .cc 文件?

  • July 14, 2011
find . -name "*.[hc]|*.cc"

上面的不行,為什麼?

更新

如何找到具有單一模式的這 3 種文件?

它不起作用,因為-name需要一個 shell 模式。您可以-regex改用,或者像這樣組裝您的模式:

find . -name '*.c' -o -name '*.h' -o -name '*.cc'

編輯

要使用單個模式執行此操作,您需要一個正則表達式:

find . -regextype posix-extended -regex '.*\.(c|h|cc)'

我敢肯定,您可以使用預設的 emacs 正則表達式來做到這一點;我不使用它們,也不知道主要區別,所以我選擇了我知道的那個。

如果您真的想使用單個 shellglob,那麼您就不走運了:多個字元串的唯一語法是{a,b},而find. 但是在我的第一個範例中,這種命令建構/連結並沒有錯。這find是打算如何使用的。

引用自:https://serverfault.com/questions/290347