Linux初心者のための10の便利な「locate」コマンドの実用例
Linuxプラットフォームの新しいユーザーが通常直面する最も不快な体験の一つは、自分のシステム上のファイルを探すための最もシンプルでありながら効果的な手段を見つけることができないことです。
Linuxは、ほぼすべての他のオペレーティングシステムと同様に、ユーザーの検索クエリに応えるためにいくつかのメカニズムを利用しています。ユーザーが利用できる最も人気のあるファイル検索ユーティリティの2つは、findとlocateと呼ばれています。
さて、両方の検索プロセスが非常によく機能することは重要です。しかし、この記事の中心はlocateユーティリティにあります。これは、ユーザーが入力したクエリを迅速に処理するために、より効率的な方法を使用するため、2つの中でより便利です。
locate ユーティリティは、ファイル検索が開始されるとファイルシステムを検索するfind の対抗製品よりも、より良く、より速く動作します。find が行うのは、ファイルシステムを直接検索することですが、locate はデータベースを調べます。このデータベースには、ファイルの一部と、それに対応するパスがシステム上に含まれています。
ここに、あなたのLinuxマシンで生産性を向上させるための10の簡単な位置特定コマンドがあります。
1. locateコマンドを使用する
ファイルを探すために位置特定コマンドを発射するのは非常に簡単で明確です。必要なのは次のようにタイプすることだけです:
$ locate LAMP-Setup.odt
/home/tecmint/LAMP-Setup.odt
/home/tecmint/TecMint.com/LAMP-Setup.odt
2. 検索クエリを特定の数に制限する
検索結果の冗長性を避けるために、-nコマンドを使用して必要な数に検索結果を制限できます。
例えば、クエリから20件だけの結果が欲しい場合は、次のコマンドを入力できます:
$ locate "*.html" -n 20
/home/tecmint/.config/google-chrome/Default/Extensions/aapocclcgogkmnckokdopfmhonfmgoek/0.9_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/aohghmighlieiainnegkcijnfilokake/0.9_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/felcaaldnbdncclmgdcncolpebgiejap/1.1_0/main.html
/home/tecmint/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/forge.html
/home/tecmint/.config/google-chrome/Default/Extensions/kbfnbcaeplbcioakkpcpgfkobkghlhen/14.752.848_0/src/popup.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/additional-feature.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/background.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/edit.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/help.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/options.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/popup.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/purchase.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/upload.html
/home/tecmint/.config/google-chrome/Default/Extensions/nlipoenfbbikpbjkfpfillcgkoblgpmj/3.9.16_0/oauth2/oauth2.html
/home/tecmint/.config/google-chrome/Default/Extensions/nmmhkkegccagdldgiimedpiccmgmieda/1.0.0.2_0/html/craw_window.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_route_details.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/feedback.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/devices.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/index.html
/home/tecmint/.config/google-chrome/Default/Extensions/pkedcjkdefgpdelpbcmbmeomcjbeemfm/5516.1005.0.3_0/cast_setup/offers.html
結果は、.htmlで終わる最初の20ファイルを表示します。
3. 一致するエントリの数を表示する
ファイル「tecmint」の一致するすべてのエントリのカウントを表示したい場合は、locate -cコマンドを使用してください。
$ locate -c [tecmint]*
1550
4. 大文字と小文字を無視して位置出力を行う
デフォルトでは、locate は大文字小文字を区別してクエリを処理するように設定されており、TEXT.TXT は text.txt とは異なる結果を示します。
locate コマンドが大文字と小文字を区別せず、両方のクエリの結果を表示するようにするには、-i オプションを付けてコマンドを入力します。
$ locate -i *text.txt*
/home/tecmint/TEXT.txt
/home/tecmint/text.txt
5. mlocateデータベースを更新する
locate コマンドは mlocate と呼ばれるデータベースに依存しています。このデータベースは、コマンドユーティリティが効率的に機能するために定期的に更新する必要があります。
mlocateデータベースを更新するには、updatedbというユーティリティを使用します。これを正しく機能させるためには、スーパーユーザー権限が必要であることに注意してください。つまり、rootユーザーとしてまたはsudo権限で実行する必要があります。
sudo updatedb
6. システムに存在するファイルのみを表示
更新されたmlocateデータベースがある場合でも、locateコマンドは、システムから物理的に削除されたファイルの結果を引き続き生成します。
コマンドを入力した時点でマシンに存在しないファイルの結果が表示されるのを避けるためには、locate-e コマンドを使用する必要があります。このプロセスは、mlocate.db にまだ存在していても、探しているファイルの存在を確認するためにシステムを検索します。
$ locate -i -e *text.txt*
/home/tecmint/text.txt
7. 新しい行なしで出力エントリを分ける
locate コマンドのデフォルトの区切り文字は改行 (\\n) 文字です。しかし、ASCII NUL のような別の区切り文字を使用したい場合は、-0 コマンドラインオプションを使用することで実現できます。
$ locate -i -0 *text.txt*
/home/tecmint/TEXT.txt/home/tecmint/text.txt
8. ロケートデータベースを確認する
現在のmlocate.dbのステータスに疑問がある場合は、-Sコマンドを使用して簡単にlocateデータベースの統計を表示できます。
$ locate -S
Database /var/lib/mlocate/mlocate.db:
32,246 directories
4,18,850 files
2,92,36,692 bytes in file names
1,13,64,319 bytes used to store database
9. 探索時のエラーメッセージを抑制する
ロケートデータベースに常にアクセスしようとすると、あなたが一般ユーザーであり、必要なスーパーユーザーではないために、mlocate.dbに対するルートアクセスの権限がないという不要なエラーメッセージが表示されることがあります。
これらのメッセージを完全に排除するには、-q コマンドを使用してください。
locate "\*.dat" -q*
10. 別のmlocateの場所を選択する
デフォルトの mlocate データベースに存在しない結果を求めるクエリを入力していて、システム内の他の場所にある別の mlocate.db からの回答が必要な場合は、-d コマンドを使用してシステムの別の部分にある異なる mlocate データベースを指示することができます。
locate -d <new db path> <filename>
locate コマンドは、一見すると手間なしで求めたことをすべて実行してくれるユーティリティの一つのように思えるかもしれませんが、実際にはプロセスの効率を維持するためには、mlocate.db に定期的に情報を供給する必要があります。これを怠ると、プログラムは少し無用になる可能性があります。