2011-06-22 58 views

回答

4

它有兩次是因爲它首先在.下找到它,然後在find的實際文件名下找到它作爲搜索的地方。也許你打算在逃脫通配符的同時使用-name

+0

我該如何改變它以包含-name? – Mark

0
find . -name *.h -o -name *.cc -maxdepth 1 -type f 
+0

我得到錯誤 – Mark

+0

忘記包括第二名稱,只是更新了答案。 – Ravi

+0

需要括號,因爲-o具有低優先級。 – Tobu

0

find *.{h,cpp} -maxdepth 1 -type f
這也許幫助。

+0

那是不對的 – Mark

+0

@Mark爲什麼?它的工作原理,似乎*。{h,cpp}表示路徑,雖然我不確定 – renenglish

+0

您正在搜索整個樹,我只想要當前目錄。 – Mark

2
find . -maxdepth 1 \(-name \*.h -o -name \*.cc \) -type f 
1

如果你只是尋找當前目錄下的文件,爲什麼不直接使用:

$ shopt -s expglob 
$ ls *.*(h|cc) */*.*(h|cc) 

否則,你必須做一些事情liek此:

$ find . -maxdepth 1 -type f \(-name "*.h" -o -name "*.cc" \) 

使用圓括號將首先執行,然後將其與-type f和-maxdepth組合。