如何在查找中使用正则表达式
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'
我正在尝试在查找中使用正则表达式。 这是我的命令:
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'