当我在主目录中输入时,locate *.cpp
我得到了数百个结果。
在(例如)中使用相同的命令~/../forfun/netstream/
,我只看到几个结果。
这怎么可能?
答案1
如果您locate *.cpp
在 shell 中运行,shell 将首先尝试扩展*.cpp
为所有与该模式匹配的文件名,然后locate
以此文件名作为参数进行调用。
因此,如果您当前目录中有任何 .cpp 文件,locate
将永远不会看到,*.cpp
而只能看到它扩展为的文件名。
使用
locate '*.cpp'
如果您不希望 shell 尝试扩展该模式。
答案2
locate
是一种基于数据库的查找方法。它的速度非常快,但不够彻底。我建议使用find
这种方法,虽然速度相对较慢,但可以满足您的要求:
find /home/forfun/netstream/ -name '*.cpp'
或者,如果您对locate的输出感到满意,但只是想将其修剪一下,您可以随时通过管道传输它grep
:
locate '*.cpp' | grep 'forfun/netstream'