0

我需要使用 GNU find命令来定位该模式的文件,如下 POSIX BRE 所述:

"_[[:digit:]]*.txt"

(下划线后跟任意数量的数字,后跟句点,后跟“txt”)

将目标文件名放入单个文本文件时,我可以使用grep和上述 RE 成功选择感兴趣的文件名。但是,使用 --regextype posix-basic查找找不到任何匹配项。

例如:

$ 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"
$

grepfind对于 POSIX BRE 有不同的语法吗?然后我如何构造一个 RE 来选择感兴趣的文件名(示例中的 _2.txt 和 _3.txt)。

4

2 回答 2

2

根据来自的正则表达式部分man find

这是整个路径上的匹配,而不是搜索。例如,要匹配名为 `./fubar3' 的文件,可以使用正则表达式 `.*bar.' 或`.*b.*3',但不是`f.*r3'。

于 2013-12-23T09:58:40.740 回答
-2

尝试使用 \d 而不是 [:digit:]

于 2013-10-09T19:17:17.743 回答