將正規表示式組與 find 一起使用

將正規表示式組與 find 一起使用

給定一個文件列表,我想找到所有以 或 結尾的.pem文件.cer。此命令用於尋找 PEM。

find . -d 1 -regex ".*\.pem"

但這個指令什麼也沒找到:

find . -d 1 -regex ".*\.(pem|cer)"

此語法適用於 BBedit 模式遊樂場。有沒有辦法將正規表示式群組與 find 一起使用?

答案1

我什至不會為此使用正則表達式,而是使用:

find . -name "*.pem" -o -name '*.cer'

它甚至可能會更快(儘管我們在這裡討論的是幾分之一秒),因為解析正規表示式的 cputime 成本更高。

編輯:

現在我看到 Hannu 的評論,我注意到(基於您最初嘗試的命令)也許您不想檢查子目錄。如果是這種情況那就變成:

find . -maxdepth 1 -name "*.pem" -o -name '*.cer'

答案2

該命令沒有發現任何內容:

find . -d 1 -regex ".*\.(pem|cer)"

您需要使用'代替"和轉義(and ,)如下所示:

find . -d 1 -regex '.*\.\(pem|cer\)'

相關內容