我無法使用find
命令的正則表達式。可能是我不明白在命令行上轉義的內容。linux查找正則表達式
爲什麼這些不一樣?
find -regex '.*[1234567890]'
find -regex '.*[[:digit:]]'
猛砸,Ubuntu的
我無法使用find
命令的正則表達式。可能是我不明白在命令行上轉義的內容。linux查找正則表達式
爲什麼這些不一樣?
find -regex '.*[1234567890]'
find -regex '.*[[:digit:]]'
猛砸,Ubuntu的
與字符類(例如[[:digit:]]
)正則表達式中由find
使用的默認正則表達式語法不被支持。您需要指定不同的正則表達式類型,例如posix-extended
才能使用它們。
查看GNU Find的正則表達式documentation,它向您顯示所有正則表達式類型及其支持的內容。
謝謝。該文件是我應該一直在尋找的。我能找到的所有內容都是http://www.gnu.org/software/emacs/manual/html_node/elisp/Char-Classes.html#Char-Classes - 這似乎表明字符類*在* emacs正則表達式中被支持模式」。 – Dijkstra 2011-04-12 13:24:52
另外檢查[Regular_expression#Character_classes](http://en.wikipedia.org/wiki/Regular_expression#Character_classes) - 非常有用的資源 – asoundmove 2013-07-23 15:48:30
你應該對find
的-regextype
參數一看,只見manpage:
-regextype type
Changes the regular expression syntax understood by -regex and -iregex
tests which occur later on the command line. Currently-implemented
types are emacs (this is the default), posix-awk, posix-basic,
posix-egrep and posix-extended.
我猜emacs
類型不支持[[:digit:]]
結構。我posix-extended
嘗試過了,它的工作如預期:
find -regextype posix-extended -regex '.*[1234567890]'
find -regextype posix-extended -regex '.*[[:digit:]]'
我認爲這可能是,但我檢查了emacs正則表達式定義,他們似乎支持[:數字:]。 http://www.gnu.org/software/emacs/manual/html_node/elisp/Char-Classes.html#Char-Classes – Dijkstra 2011-04-12 13:19:57
那麼,你可以試試這個'.*[0-9]'
這不是他的問題的答案;你只是重寫了他的正則表達式... – 2015-01-08 07:46:53
注意-regex
取決於整個路徑上。
-regex pattern
File name matches regular expression pattern.
This is a match on the whole path, not a search.
您實際上並不需要爲您所做的事情使用-regex
。
find . -iname "*[0-9]"
在這裏也不需要顯式點;) – 2015-11-22 17:33:16
你有什麼輸出表明他們不是? – shellter 2011-04-12 13:16:12