我想使用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 接受通配符模式。)