Найти частичное имя файла 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 Globbing. Следовательно,
locate *securit{y,ies}*
Как указано в моих комментариях выше, вы обнаружите, что в "непользовательских" каталогах существует множество соответствий "безопасности", поэтому вы можете ограничиться вашим домашним каталогом с помощью
locate *securit{y,ies}*|grep "^$HOME"
Или, если это конкретный подкаталог,
locate *securit{y,ies}*|grep "^$HOME/path/to/directory"
Или использовать find
, как предполагает Ринзвинд. В этом простом случае я не думаю, что есть сильное преимущество find
, который является более мощным (но потенциально медленнее), чем locate
,
find ~/path/to/directory -name '*security*' -or -name "*securities*"
(Я не уверен, как заставить находить принимать шаблоны сглаживания.)