定位输出目录是否相关?

定位输出目录是否相关?

当我在主目录中输入时,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'

相关内容