我不能说它适用于 Windows,但根据我的理解,这个正则表达式是正确的,以及我将如何编写它(也许^
开头除外)
来自http://www.velocityreviews.com/forums/showpost.php?p=382944&postcount=3
^.+\.((jpg)|(gif)|(exe))$
Run Code Online (Sandbox Code Playgroud)
当我跑
find -regex '^.+\.((jpg)|(gif)|(exe))$'
Run Code Online (Sandbox Code Playgroud)
我写的时候exe不显示
find -regex '^.+\.exe$'
Run Code Online (Sandbox Code Playgroud)
确实如此。为什么find -regex
不想使用()
或者(()|())?
我一直认为这对一切都有效。
Kyl*_*ndt 11
GNU find 默认使用 emacs 正则表达式,您可以使用-regextype
选项更改该类型(请参阅 man find)。
如果你使用-regextype posix-egrep
你的表达似乎有效。然后你也可以将模式减少到^.+(jpg|gif|exe)$
使用 emacs:find . -regex '.+\(jpg\|gif\|exe\)$'
. 有关这些特定的正则表达式规则,请参阅emacs 手册的这一部分。你需要逃避|
,()
让他们不是字面上的。