2016-06-20 15 views
1

比方說,我在我的目錄中的以下兩個文件擊:文件匹配模式適用於Ubuntu的,但不是在OS X

- test.yaml 
- test.yml 

在Ubuntu上,下面的bash命令列出兩個文件:

$ find . -regex '.*\.ya?ml' 
./test.yaml 
./test.yml 

然而,在OS X相同的命令沒有列出任何文件:

$ find . -regex '.*\.ya?ml' 

我的問題,什麼是正則表達式PA ttern可以傳遞給-regex param,所以這個命令在兩個平臺上都可以工作嗎?

+0

是否'找到。 -regex'。* \。ya \?ml''工作? – heemayl

+0

它在任一平臺上都不起作用。 – rubayeet

+0

嗯....正在擴展正則表達式,想逃避'?'會做it..as'GNU find'起訴'emacs'風格的正則表達式是沒有幫助.. – heemayl

回答

3

find可在OSX需要-E支持擴展正則表達式。在OSX下面的工作:

find -E . -regex '.*\.ya?ml' 

下面也將在OSX上運行,而不需要擴展的正則表達式:

find . -regex '.*\.ya\{0,1\}ml' 

編輯:如果你想爲這兩個系統的共同find然後使用:

find . -regex '.*\.ya*ml' 
+0

他們只OS X的工作。第一個命令失敗,在Ubuntu上輸出如下內容:find:unknown predicate'-E'。第二個命令不會列出Ubuntu上的任何文件。 – rubayeet

+0

我提供了一個可以在OSX上工作的解決方案。你'問題find'命令已經適用於Ubuntu的 – anubhava

+0

我知道,但我在我的問題提到我要找的是兩個平臺上工作的解決方案。 – rubayeet

相關問題