如何在find中使用regex
我试图在find中使用正则表达式。 这是我的命令:如何在find中使用regex,regex,find,Regex,Find,我试图在find中使用正则表达式。 这是我的命令: for GLOBALS_DEFINITIONS in `find . -type f -name -regex 'globalSettings_\d+.json'`; do 结果: find: paths must precede expression: 错误消息是由-name参数引起的。您应该使用-name或-regex,但不能同时使用: find . -type f -regex 'globalSettings_\d+.json' 但
for GLOBALS_DEFINITIONS in `find . -type f -name -regex 'globalSettings_\d+.json'`; do
结果:
find: paths must precede expression:
错误消息是由
-name
参数引起的。您应该使用-name
或-regex
,但不能同时使用:
find . -type f -regex 'globalSettings_\d+.json'
但是,请注意,正则表达式必须匹配完整路径,而不仅仅是文件名。假设您只想匹配当前目录中的文件,可以执行以下操作:
find . -type f -regex './globalSettings_\d+.json'
如果深度匹配可以(这通常是首先使用find
的原因),您可以执行以下操作:
find . -type f -regex '.*/globalSettings_\d+.json'
但是,关于\d
部分,请注意默认情况下,find
使用Emacs的regexp语法,其中\d
与数字不匹配。您可以这样做:
find . -type f -regex '.*/globalSettings_[0-9]+.json'
删除
-name
。仍然不起作用。正则表达式必须匹配整个路径,而不仅仅是文件名。并且语法是Emacs regexp的语法,除非您使用-regextype
对其进行更改。