Найти частичное имя файла 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*"

(Я не уверен, как заставить находить принимать шаблоны сглаживания.)

Другие вопросы по тегам