這工作得很好:
find . -name "skr[0-9][0-9][0-9][0-9][0-9].rtf" -type f
的Linux/Unix查找命令這不起作用:
find . -name "skr[0-9]{5}.rtf" -type f
任何人都可以請解釋一下,給我類似命令的第二個版本的東西。
這工作得很好:find . -name "skr[0-9][0-9][0-9][0-9][0-9].rtf" -type f
的Linux/Unix查找命令
這不起作用:find . -name "skr[0-9]{5}.rtf" -type f
任何人都可以請解釋一下,給我類似命令的第二個版本的東西。
的{5}
是從擴展正則表達式語法不從殼通配符。它不適用於-name
。
您可以使用-regex
而不是-name
以及一些查找版本(GNU)。在這種情況下,您的模式必須匹配整個路徑,請注意*
和?
和.
,因爲它們在正則表達式中具有不同的含義。
重複計數語法是「擴展」 RE的一部分,所以你需要使用-E(與它實際上支持它的發現變種):
find -E . -regex '.+/skr[0-9]{5}\.rtf' -type f
在Mac上,您需要安裝GNU findtools如果您希望這樣的安慰:
brew install findutils --default-names
在某些系統上,你可以嘗試gfind
代替find
。
你能否建議一些類似於第二版的命令? –
你能解釋一下-regex在這個例子中的用法,我是linux命令的新手,這就是爲什麼要問。 –
@ user2132128那麼,作爲一個新手,最好忘記RE :)我添加了一個有效的例子,因爲你可以看到它並不像你最初的正確版本那麼短,所以不要打擾...(如果你很好奇檢查一個正則表達式教程,並記住「。+ /」的意思是「一個或多個以斜槓結尾的字符。 – eckes
沒有一個'find'命令。你的意思是特指GNU'find'? – 0xC0000022L
是的,對不起,我應該提到.. –