Shell
如何在 linux 的目前目錄下找到 .h、.c 和 .cc 文件?
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
是打算如何使用的。