0

我想通过使用正则表达式的查找来排除文件被报告。然而,这似乎只有在 find 的路径参数是 a 时才有效。(点)。一旦我指定了路径,find 就不会返回任何东西。

文件夹中的2个文件:

~/xtmp/testfind> ls
test1.tmp.txt   test1.txt

通过将路径指定为 的预期结果。

~/xtmp/testfind> find . -regex '.*txt.*' ! -regex '.*tmp.*' 
./test1.txt

使用 $PWD 它什么也找不到:

~/xtmp/testfind> find $PWD -regex '.*txt.*' ! -regex '.*tmp.*' 
~/xtmp/testfind>

放弃!正则表达式它找到了一切,所以 $PWD 是正确的:

~/xtmp/testfind> find $PWD -regex '.*txt.*' 
[...]/xtmp/testfind/test1.tmp.txt
[...]/xtmp/testfind/test1.txt
4

1 回答 1

1

您的路径包含字符串tmp(as /xtmp/),因此排除项! -regex '.*tmp.*'始终匹配。这种负匹配很难用正则表达式正确完成;但在这种情况下,您可能想要使用 glob 和-name(仅匹配最终路径名组件,而不是通向它的路径)。

find $PWD -name '*txt*' ! -name '*tmp*'
于 2012-04-24T08:15:56.073 回答