我正在尝试查找名称恰好包含 14 位数字的所有文件(我正在尝试匹配文件名中的时间戳)。我不确定如何正确使用 GNU find regexp 语法进行重复。
我尝试过
find -regex ".*[0-9]{14}
和find -regex ".*[0-9]\{14\}
,但都没有任何结果。你能帮我解决语法问题吗?
记住,GNU
find's -regex
匹配整个路径。无论如何,您可以使用 find
和 grep
的组合来完成任务,例如查找没有其他字符的 14 个数字
find . -type f -printf "%f\n" | grep -E "\b[0-9]{14}\b"
修改以满足您的需求
尝试更改 -regextype 参数来查找。
更改 -regex 和 -iregex 理解的正则表达式语法 稍后在命令行上进行的测试。目前实施的 类型有 emacs(这是默认值)、posix-awk、posix-basic、 posix-egrep 和 posix-extend。
奇怪,我只是尝试了一下,却无法完成这项工作。无论如何,这是一个解决方法(匹配 2 个连续的数字):
$ls
a123.txt a1b2c3.txt a45.txt b123.txt
$find -regex '.*[^0-9][0-9][0-9][^0-9].*'
./a45.txt
示例:
find . -regextype grep -iregex '.*/[0-9]\{14\}.*'