Linux Ubuntu 13.04:查找以

Linux Ubuntu 13.04:查找以,linux,find,Linux,Find,有人能告诉我怎么滥用find吗 我想查找目录中以.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吗

我想查找目录中以.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-键入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


谢谢。

引用通配符,即

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

这里的混乱之处在于,通配符(*字符)是由shell在它到达find命令之前解释的。要避开这个问题,您需要避开它:

find . -type f -name \*.config
通过使用\对*进行转义,shell将*传递给find命令

例如,如果当前目录中有一个名为
foo.config
的文件,shell会将通配符展开为foo.config并传递给find,因此find命令透视图中的结果命令将是:

find . -type f -name foo.config

你应该问这个,谢谢。有没有线索说明为什么*.erl可以工作,但是*.config不能工作?这与shell扩展有关。shell(例如bash)在传递给find命令之前展开通配符“*”。