2

我知道我遗漏了一些明显的东西,而且我确定这与我的 -name 部分有关。

这是家庭作业,但我认为我非常接近正确答案。更好的写作方式也总是受到赞赏!

find /home/caine/thecopy -user caine -size -10240c -name ^a.* | wc 

这给出了wcof 0 0 0,删除名称表达式会产生大量计数。

我试过 ^a 、 '^a' 、 '^a.*' 并且都得出 0 个结果。TIA 伙计们。:)

4

2 回答 2

4

您需要包装文件名:

find /home/caine/thecopy -user caine -size -10240c -name "a.*" | wc
#                                                        ^   ^
于 2013-02-26T21:11:21.057 回答
2

to 的参数-name是 shell 模式,而不是正则表达式。^and字符将分别.匹配文字^.字符,而不是名称的开头和任何字符,就像它是正则表达式一样。

如果要匹配以 开头的文件名'a',这应该有效:

find /home/caine/thecopy -user caine -size -10240c -name 'a*' | wc 

周围的引号a*(单引号或双引号)很重要;没有它们,shell 将在find看到它之前扩展模式。

如果你真的想匹配一个正则表达式,你可以替换-name-regex; 这是一个 GNU 特定的扩展。但在这种情况下,shell 模式可能就足够了。

注意:我假设您要匹配名称以a;开头的文件。你实际上并没有这么说。

于 2013-02-26T21:29:03.283 回答