2013-02-26 1202 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