如何在查找中使用正则表达式

How to use regex in 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'

但是,请注意正则表达式必须匹配完整路径,而不仅仅是文件名。所以,假设你只想匹配当前目录中的文件,你会这样做:

find . -type f -regex './globalSettings_\d+.json'

如果可以进行更深层次的匹配(这通常是首先使用 find 的原因),您可以这样做:

find . -type f -regex '.*/globalSettings_\d+.json'

然而,关于 \d 部分,请注意默认情况下,find 使用 Emacs 的正则表达式语法,其中 \d 不匹配数字。您可以这样做:

find . -type f -regex '.*/globalSettings_[0-9]+.json'