定位部分文件名 mlocate

定位部分文件名 mlocate

我想使用locate命令查找文件。我不太确定文件名。我的主目录中的 3-4 文件夹中有以下文件。

PRVL_Securities_0200_H240401.html
PRVL_TermLeasehold_0000_H200401.html
PRVL_Trees_0000_Hxx0401.html
PRVL_TrustBeneficiaryRight_0000_H220401.html
PRVL_UnlistedSecurities_0101_H250527.html
PRVL_UnlistedSecurities_0102_H250527.html
PRVL_UnlistedSecurities_0200_H250527.html
PRVL_UnlistedSecurities_0300_H250527.html
PRVL_UnlistedSecurities_0400_H250527.html
PRVL_UnlistedSecurities_0500_H250527.html
PRVL_UnlistedSecurities_0600_H250527.html

我正在寻找包含单词"security"或的 文件"securities"。我想要该文件的精确路径。如何使用locate命令来做到这一点?

答案1

你需要使用Bash 通配符模式。 因此,

locate *securit{y,ies}*

正如我上面的评论所述,您会发现非用户目录中有很多与“安全”匹配的内容,因此您可能希望使用以下方法限制到您的主目录:

locate *securit{y,ies}*|grep "^$HOME"

或者如果它是一个特定的子目录,

locate *securit{y,ies}*|grep "^$HOME/path/to/directory"

或者使用find,正如 Rinzwind 所建议的那样。在这个简单的例子中,我认为使用 并没有什么优势find,它比 更强大(但可能更慢)locate

find ~/path/to/directory -name '*security*' -or -name "*securities*"

(我不确定如何让 find 接受通配符模式。)

相关内容