2013-02-26 1198 views
2

我知道我错过了一些显而易见的东西,我确定这是与我的名称部分。如何查找名称以“a”开头的文件?

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

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

这给出了一个0 0 0wc,删除名称中的表达产生计数不减当年。

我试过了^ a,'^ a','^ a。*',并且都有0个结果。 TIA人。 :)

回答

4

你需要用文件名:

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

我认为它不需要'^'(除非它是文件名的一部分) – user000001 2013-02-26 21:14:23

+0

+1,否则表达式扩展为以当前工作目录中的'a'开头的文件名。 – jman 2013-02-26 21:14:54

+0

也就是@skjaidev。 – fedorqui 2013-02-26 21:15:29

2

-name的参数是一个shell模式,正则表达式。 ^.字符将与文字^.中的字符匹配,而不是名称和任何字符的开头,如同它们是正则表达式时那样。

如果你想匹配开始'a'文件名,这应该工作:

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

的引号a*(单人或双人)是很重要的;如果没有它们,外壳会在find看到它之前扩大图案。

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

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

+0

宾果!是的,我仍然错误地使用正则表达式字符的地方和时间。 :/ 非常感谢您的帮助球员。 :) – moominboy 2013-02-26 21:34:42

+0

+1的'-regex' – user000001 2013-02-27 00:01:44