Linuxには、ファイルやディレクトリを見つけて見つけるための多くのツールがあります。以前の経験から、これらのツールのいくつかは大規模で非常にスムーズであり、これらのツールのいくつかは少し遅いものでしたが、ディレクトリでカバーするのに大きなスケールがありました。以前、Linuxでfdコマンドとfindコマンドを使用してファイルを検索する方法を見てきました。 Linuxでfdまたはfindコマンドを使用する代わりに、locateコマンドを使用して、特定のパラメーターを持つファイルをすばやく効率的に検索できます。
fdコマンドとlocateコマンドの主な違いは、locateコマンドはクエリの検索に特別なデータベースを使用するため、ディレクトリ内のファイルをすばやく見つけることができることです。
LinuxおよびUnixベースのシステムでは、locateコマンドはmlocate、またはマージするlocateデータベースを使用してシステム全体を検索します。 Locateコマンドは、1982年にGNUプライバシーライセンスを持つBSDおよびGNUマシンで最初にリリースされました。
Locateコマンドはどのように機能しますか?
Linuxでのlocateコマンドの動作方法は非常に一般的で、理解しやすいものです。これは、ファイルシステム全体にリンクされたパスを格納するシステム上のデータベースを使用します。 Locateコマンドを実行すると、データベースにアクセスして結果を検索します。 Locateコマンドは、updatedbまたはmlocateデータベースを使用して、すべてのサーチャーとパスを保管します。
Locateはパスとリンクを使用してアイテムを検索するため、これにより、locateコマンドが高速になります。変更を加えたり、mlocate DBを復元したりする必要がある場合は、以下のディレクトリから構成ファイルにアクセスできます。
/var/lib/mlocate/mlocate.db
通常、データベースの移動 Linuxシステムでlocateコマンドを実行するたびに自動的に更新されます。ただし、場合によっては、ファイルを削除したり、システムに新しいファイルを追加したりするときに、データベースがシステムのデータをすぐに取得しないことがあります。その場合、Linuxシステム上のmlocateデータベースを手動で更新して、コマンドをより強力に検索できるようにすることができます。
updatedbを更新することもできます スクリプトによる構成。
---# cat /etc/updatedb.conf PRUNE_BIND_MOUNTS="yes" PRUNENAMES=".git .bzr .hg .svn" PRUNEPATHS="/tmp /var/spool /media" PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs ecryptfs fusesmb devtmpfs"
システムにロケートをインストール
現在、すべての主要なディストリビューションで、locateコマンドがLinuxシステムにプリインストールされています。システムでlocateコマンドが見つからない場合は、それをマシンにインストールして開始できます。
Linuxシステムでのlocateコマンドのインストール方法は簡単です。パッケージはすでにLinuxの公式リポジトリに保存されているため、Debian Linuxのaptitudeコメントと、RedhatまたはFedoraLinuxシステムのDNFまたはYumコマンドを使用してインストールできます。
インストールコマンドを実行する前に、locateコマンドがシステムにインストールされているかどうかを確認できます。確認するには、locateと入力するだけです。 ターミナルシェルのEnterボタンを押します。バージョンまたはステータス情報を取得すると、ツールがシステムにインストールされます。
下の画像でわかるように、検索ツールがインストールされていないため、インストールコマンドを実行します。
$ locate
UbuntuまたはDebianベースのLinuxで以下のコマンドを実行して、システムに検索ツールをインストールします。
sudo apt update sudo apt install mlocate
YumベースのFedoraとRedhatLinuxシステムを使用している場合は、以下のコマンドセットを実行してロケートツールを取得できます。
sudo yum -y update sudo yum install mlocate
検索コマンドの例
この投稿では、あなたが経験して学ぶべきいくつかの有用で実用的な実例を見るでしょう。 Locateコマンドは、デスクトップとサーバーの両方のすべての主要なLinuxディストリビューションでスムーズに機能します。
1。ファイルを検索する
Locateコマンドについて最初に目にする例は、locateコマンドを使用してファイルシステム全体でファイルを検索する方法です。このコマンドは、システム全体にあるすべてのMySQLファイルとともに返されます。
locate mysql
2。出力をフォーマットする
ここで、上記のコマンドをフィルタリングする場合は、 lessを使用できます。 パイプ記号を使用した構文。 GREPコマンドを使用して、出力を並べ替えたりフィルタリングしたりすることもできます。
locate mysql | less
3。既存のファイルを表示する
前述したように、locateコマンドを使用しても、Linuxシステムから削除したばかりのファイルやデータ、またはファイルシステムに追加したばかりのデータが削除されない場合があります。したがって、適切な値を取得するには、-e
を使用できます。 すでに削除されているファイルを削除するには、locateコマンドでフラグを立てます。
たとえば、ここでは、 rmを実行しました コマンド システムからファイルを削除します。これで、Linuxで従来の方法でlocateコマンドを実行すると、ファイルがシステムにまだ存在しているという結果が得られます。ただし、-eフラグを指定してロケートコメントを実行すると、ロケートデータベースがすぐにリロードされ、出力が更新されます。
rm file1.txt locate file1.txt locate -e file1.txt
4。既存のファイルを数える
Locateコマンドは、特定のクエリに対してシステムに存在するファイルの数を出力することもできます。
locate -c mysql
5。検索中のエラーを無効にする
Locateコマンドでアイテムを見つけ、パスや構文を間違えると、エラーメッセージが返されることがよくあります。エラーメッセージを非表示にする場合は、-q
を追加できます。 コマンドの最後にフラグを立てて、検索中のエラーを無効にします。
locate -d ~/Documents/database.db hello locate -d ~/Documents/database.db hello -q
6。検索結果の数を制限する
検索結果を表示するためのlocateコマンドの制限を設定することもできます。下記のlocateコマンドは、 .txtを検索するためのクエリの結果を10個だけ表示します。 ファイルシステム内のファイル。
locate *.txt -n 10
7。大文字と小文字を区別するファイルを無視する
Linuxでは、デフォルトでlocateコマンドで大文字と小文字が区別されますが、システムで無効にすることができます。 Locateコマンドの大文字と小文字の区別を無効にするには、-i
を使用できます。 コマンドのフラグ。
$ locate file1.txt $ locate FILE1.TXT $ locate -i FILE1.TXT
8。正確な名前のファイルを検索する
正確な名前のファイルを検索する場合は、-r
を使用できます。 Linuxのlocateコマンドのフラグ。下記のコマンドでは、$
記号は、セッションが終了したことを示す式として使用され、スラッシュ記号(/)はコマンドの境界の記号です。
locate -r /file404_UbuntuPIT.txt$
9。 ASCIINULで出力エントリを区切る
通常、Linuxでは、locateコマンドは改行を使用して出力を出力しますが、必要に応じて、出力からスペースを削除し、ASCIInullを使用して出力を出力できます。
locate -0 apache
10。データベース統計の表示
ファイルの検索に加えて、Linuxのlocateコマンドで-s記号を使用して、システム上の特定のクエリのデータベース構造を表示することもできます。
locate -S
11。 mlocateデータベースを更新する
Linuxシステムでlocateコマンドのデータベースを手動で更新する必要がある場合は、sudoアクセスを使用して次のコマンドを実行できます。
sudo updatedb
12。別のmlocateデータベースを選択してください
クエリの検索中に問題が発生した場合は、データベースの検索に問題がある可能性があります。 Locateコマンドは、デフォルトでmlocateデータベースを使用します。 Locateコマンドで他のデータベースを切り替えることもできます。
default mlocate database locate -d [new database path] [pattern]
13。発音区別符号とアクセントの違いを無視する
場合によっては、ファイル名にギリシャ語またはローマ字のアルファベットを使用し、そのファイルを検索しているときに、その特別なアルファベットの代わりに通常のアルファベットを使用した可能性があります。その場合、locateコマンドは出力を返しません。この問題を回避し、発音区別符号とアクセントの違いを無視するには、-t
を使用できます。 コマンドのフラグ。
locate My_new_image_ca.jpeg locate -t My_new_image_ca.jpeg
14。表示のみ 現在 システム内のファイル
先ほど、locateコマンドが削除されたファイルを出力に返すことがあることを説明しました。システムに物理的に存在せず、すでに削除されているファイルを回避できる方法がいくつかあります。 -i
を使用してのみ、システムに存在するファイルを表示できます。 および-e
Linuxのlocateコマンドのフラグ。
locate -i -e *text.txt*
15。特定のファイルタイプを検索する
Locateコマンドを使用して、Linuxシステム内の特定のタイプのファイルを検索できます。たとえば、以下のコマンドは、locateコマンドを使用してシステム内のテキストおよびjpeg画像ファイルを検索する方法を示しています。
locate -c “*.txt*” locate -c “*.jpg*”
最後の言葉
投稿全体で、locateコマンドがどのように機能し、効率的な検索結果を提供するためのデータベースと操作のタイプを確認しました。いくつかの強力で最もよく使用されるlocateコマンドの例を確認しました。
この投稿がお役に立てば幸いです。はいの場合は、この投稿を友達やLinuxコミュニティと共有してください。また、システム上のファイルを見つけるのに最も役立つツールをお知らせください。