回答:
別のアプローチは、パターンマッチングを使用することですlocate
。
locate '/some/directory/*filename*'
以下のコマンドの出力を比較します。
$ locate tmpfile
/usr/lib64/perl5/auto/POSIX/tmpfile.al
/usr/share/man/fr/man3/tmpfile.3.gz
/usr/share/man/ja/man3/tmpfile.3.gz
/usr/share/man/man3/tmpfile.3.gz
/usr/share/man/man3p/tmpfile.3p.gz
$
$ locate '/usr/lib64/*tmpfile*'
/usr/lib64/perl5/auto/POSIX/tmpfile.al
$
locate /usr/lib*tmpfile*
同じ結果が得られます。
$ locate '/usr/lib64/*tmpfile'
は、結果は返されません。
locate
てgrep
。
以下を使用して、特定のディレクトリのslocateデータベースを作成します。
updatedb -U /path/to/directory
そして検索:
locate <search_string>
更新
これは私のGentooシステムでは正常に機能しますが、CentOSには-U
オプションが含まれていません。だから、代わりに以下を試すことができます:
以下を使用してデータベースを構築します。
# updatedb -U /path/to/dir -o dir_locate.db
および検索:
# locate -d dir_locate.db <search_string>
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
する方法を確認してください。
locate
指定されたディレクトリ内で検索を行うためのターミナルエイリアスは次のとおりです。alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "
エイリアスが有効になったら、ターミナルタイプmy_locate *foo*
でレースに参加します。データベースの更新を連結し、コロン文字を使用してデータベースを連結することで検索を検索できます。rtfm:linux.die.net/man/8/updatedb