locateコマンドまとめ

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 NN 件だけ結果を表示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

コメント

タイトルとURLをコピーしました