我需要使用GNU find 命令来查找模式的文件,由POSIX BRE描述如下:
"_[[:digit:]]*.txt"
(下划线后跟任意数字后跟句点后跟“txt”)
当目标文件名放入单个文本文件时,我可以使用上面提到的RE使用 grep 成功选择感兴趣的文件名。但是,使用--regextype posix-basic find 找不到任何匹配项。
E.g:
$ touch 1.txt _2.txt _3_r.txt _3.txt 3.txt
$ for i in $(ls); do echo $i >> files.txt; done
$ grep "_[[:digit:]]*.txt" files.txt
_2.txt
_3.txt
$ find . -regextype posix-basic -regex "_[[:digit:]]*.txt"
$
grep 和 find 是否有不同的POSIX BRE语法?然后,我如何构造RE来选择感兴趣的文件名(示例中为_2.txt和_3.txt)。
答案 0 :(得分:2)
根据man find
的正则表达式部分:
这是整个路径上的匹配,而不是搜索。 例如,要匹配名为`./fubar3'的文件, 你可以使用正则表达式`。* bar。'或者`。* b。* 3',但不是`f。* r3'。
答案 1 :(得分:-1)
尝试使用\ d而不是[:digit:]