2013-10-06 106 views
1
結尾的文件

有人能告訴我我是如何濫用find嗎?Ubuntu 13.04:查找以

我想查找以.config結尾的目錄中的所有文件。

$:~/esrc$ find . -type f 
./t.config 
./util/ebin/config.beam 
./util/ebin/gen_spec.beam 
./util/etc/util.config 
./util/etc/v.config 
./util/src/config.erl 
./util/src/gen_spec.erl 
./util/src/v.config 
./util/u.config 

我的第一個想法是使用find。 -type f -name * .config

不幸的是,這只是在根目錄中找到一個文件。

$:~/esrc$ find . -type f -name *.config 
./t.config 

同樣的命令不工作,找到所有* .erl文件雖然...

$:~/esrc$ find . -type f -name *.erl 
./util/src/config.erl 
./util/src/gen_spec.erl 

任何線索,爲什麼這個工程的* .erl而不是*的.config?

謝謝。

+0

你應該問這個http://askubuntu.com/ – Joren

回答

1

報價通配符,即

find . -type f -name '*.config' 
+0

這工作表示感謝。任何線索爲什麼* .erl工作,但不是* .config雖然? – Goldfish

+0

它必須做有關殼牌擴張。殼,例如bash在傳遞給find命令之前擴展通配符'*'。 –

1

這裏的混亂是通配符(*字符)由它使得它find命令之前解釋。要解決,你需要逃避它這個問題:

find . -type f -name \*.config 

通過逃避*與\ shell將通過*通過對find命令。

,如果你有在當前目錄中名爲foo.config,外殼將擴大通配符foo.config並傳遞被發現,所以從find命令的角度來看,結果的命令將文件的一個例子是:

find . -type f -name foo.config