locateコマンド
locateは、updatedbによって作成された1つ以上のデータベースを読み取り、少なくとも1つのパターンに一致するファイル名を標準出力に1行ずつ書き出します。
locate [オプション]… パターン…
オプション | 説明 | 使用例 |
---|---|---|
-i, --ignore-case | 大文字・小文字を区別せずに検索 | locate -i "example.TXT" |
-r, --regexp REGEXP | 正規表現を使って検索 | locate -r '.*\.log$' |
-c, --count | 一致するファイルの数のみを表示 | locate -c "config" |
-e, --existing | 現在存在するファイルのみを表示 | locate -e "backup.tar.gz" |
-L, --follow | シンボリックリンクを辿る | locate -L "shortcut" |
-P, --nofollow | シンボリックリンクを辿らない | locate -P "shortcut" |
-A, --all | すべてのパターンに一致するエントリのみ表示 | locate -A "config" "log" |
-l, --limit N | N 件だけ結果を表示 | locate -l 10 "*.txt" |
-0, --null | 結果を改行ではなく NUL 文字で区切る(xargs -0 用) | locate -0 "*.jpg" |
-q, --quiet | エラーメッセージを抑制 | locate -q "*.mp4" |
-w, --wholename | フルパスで検索(デフォルト動作) | locate -w "/var/log/syslog" |
updatedbコマンド
updatedbは、locateによって使用されるデータベースを作成または更新します。データベースがすでに存在する場合、そのデータは再度ディレクトリを読み取らないように再利用されます。updatedbは通常、cronによって毎日実行され、デフォルトのデータベースを更新します。
updatedb [オプション]…
オプション | 説明 | 使用例 |
---|---|---|
-l, --localpaths PATHS | 指定したパスのみをインデックスに追加 | updatedb -l "/home /var" |
-e, --prunepaths PATHS | 指定したパスをインデックスから除外 | updatedb -e "/mnt /tmp" |
-E, --prunefs FILESYSTEMS | 指定したファイルシステムを除外 | updatedb -E "nfs,smbfs" |
-f, --netpaths PATHS | ネットワークファイルシステムのパスをインデックスに追加 | updatedb -f "/mnt/network" |
--add-prunepaths PATHS | 既存の除外リストにパスを追加 | updatedb --add-prunepaths "/backup" |
--add-prunefs FILESYSTEMS | 既存の除外リストにファイルシステムを追加 | updatedb --add-prunefs "tmpfs" |
-U, --database-root PATH | インデックスの基準となるルートディレクトリを指定 | updatedb -U /home |
--output FILE | 指定したファイルにデータベースを保存 | updatedb --output /var/lib/mlocate.db |
--verbose | 詳細な情報を表示 | updatedb --verbose |
locateのテスト用のファイルを作成し、検索してみる
テスト用のファイルを作成
# 作業用ディレクトリの作成 mkdir -p ~/work/dir1/dir2/dir3 && \ # カレントディレクトリの移動 cd ~/work && \ # テスト用のファイル作成 echo これはtest-file1 > dir1/dir2/locate-test-file1 && \ echo これはtest-file2 > dir1/dir2/dir3/locate-test-file2 && \ # ディレクトリの構造を確認 tree

正規表現を使って検索。DBに登録されていないため何も表示されない
locate -r locate-test*

-Uでdir1をスキャンして/var/lib/mlocate/mlocate.dbを更新
sudo updatedb -U dir1/

再度検索。今度は表示されます
locate -r locate-test*

カスタムDBから検索
テスト用のファイルを作成。locate-test-file3を新規に作成しています
# 作業用ディレクトリの作成 mkdir -p ~/work/dir1/dir2/dir3 && \ # カレントディレクトリの移動 cd ~/work && \ # テスト用のファイル作成 echo これはtest-file1 > dir1/dir2/locate-test-file1 && \ echo これはtest-file2 > dir1/dir2/dir3/locate-test-file2 && \ echo これはtest-file2 > dir1/dir2/dir3/locate-test-file3 && \ # ディレクトリの構造を確認 tree

dir1 の内容をスキャンしてcustom_dbを作成する
sudo updatedb -U dir1 -o custom_db

通常の/var/lib/mlocate/mlocate.dbからでは検索できない
locate locate-test-file3

検索対象にcustom_dbを指定すると検索できる
locate -d custom_db locate-test-file3

コメント