如何查找名称以“a”开头的文件?

时间:2013-02-26 21:10:08

标签: bash shell find

我知道我错过了一些明显的东西,我确信这与我的-name部分有关。

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

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

这会得到wc 0 0 0,删除名称表达式会产生大量的计数。

我已经尝试了^ a,'^ a','^ a。*'并且都得到0结果。 TIA伙计们。 :)

2 个答案:

答案 0 :(得分:4)

您需要包装文件名:

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

答案 1 :(得分:2)

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

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

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

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

如果您确实想要匹配正则表达式,可以将-name替换为-regex;这是GNU特定的扩展。但在这种情况下,shell模式可能已经足够好了。

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