有人可以告诉我,我是如何滥用发现的吗?
我想查找目录中以.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 :(得分:3)
引用外卡,即
find . -type f -name '*.config'
答案 1 :(得分:1)
这里的混淆是通配符(*字符)由 shell 解释之前它是find命令。要解决这个问题,你需要逃避它:
find . -type f -name \*.config
通过使用\来转义*,shell会将*传递给find命令。
例如,如果当前目录中有一个名为foo.config
的文件,shell会将通配符展开到foo.config并将其传递给find,所以从find命令的角度看结果命令是:
find . -type f -name foo.config