GNU find regexp 中的重复

问题描述 投票:0回答:4

我正在尝试查找名称恰好包含 14 位数字的所有文件(我正在尝试匹配文件名中的时间戳)。我不确定如何正确使用 GNU find regexp 语法进行重复。

我尝试过

find -regex ".*[0-9]{14}
find -regex ".*[0-9]\{14\}
,但都没有任何结果。你能帮我解决语法问题吗?

regex find
4个回答
2
投票

记住,GNU

find's -regex
匹配整个路径。无论如何,您可以使用
find
grep
的组合来完成任务,例如查找没有其他字符的 14 个数字

find . -type f -printf "%f\n" | grep -E "\b[0-9]{14}\b"

修改以满足您的需求


2
投票

尝试更改 -regextype 参数来查找。

更改 -regex 和 -iregex 理解的正则表达式语法 稍后在命令行上进行的测试。目前实施的 类型有 emacs(这是默认值)、posix-awk、posix-basic、 posix-egrep 和 posix-extend。


0
投票

奇怪,我只是尝试了一下,却无法完成这项工作。无论如何,这是一个解决方法(匹配 2 个连续的数字):

$ls
a123.txt  a1b2c3.txt  a45.txt  b123.txt
$find -regex '.*[^0-9][0-9][0-9][^0-9].*'
./a45.txt

0
投票
  1. -regextype 应与您的 -regex 或 -iregex 匹配
  2. -regex 和 -iregex 必须稍后出现在命令行上。
  3. -正则表达式匹配整个路径

示例:

find . -regextype grep -iregex '.*/[0-9]\{14\}.*'
© www.soinside.com 2019 - 2024. All rights reserved.