Linuxでファイルを検索する方法|find・locate・which・whereisコマンドの使い方と違いを徹底解説
Linuxのターミナルからファイルを検索・特定する方法はいくつかありますが、その中でも find、locate、which、whereis の4つのコマンドは特によく使われています。本記事では、それぞれのコマンドの基本的な使い方から、検索速度や用途の違いまで、わかりやすく解説していきます。
1. find ― 指定ディレクトリを柔軟に検索する定番コマンド
find は、任意のディレクトリ内のファイルを検索するための最も直接的なアプローチです。検索対象のディレクトリを明示的に指定しない場合は、カレントディレクトリ(現在いるディレクトリ)が検索範囲になります。
次のスクリーンショットは、カレントディレクトリ(.)を対象に、拡張子が .txt で終わるすべてのファイル名を検索している例です。
find の強みは、ファイル名だけでなく、タイムスタンプ、パーミッション、ファイルサイズ、ファイルタイプ、所有者など、さまざまな条件を組み合わせて検索できる点にあります。正規表現を使って検索条件を細かく制御することも可能です。より詳細な使い方については、manページなどを参照してください。
2. locate ― 高速検索を実現するデータベース型コマンド
locate は、ファイル名を手がかりにファイルを探すもう一つの方法です。find が指定ディレクトリを実際に走査して結果を返すのに対し、locate は「mlocate.db」というデータベース(/var/lib/mlocate/mlocate.db)に対して検索を行います。このデータベースは、cronユーティリティによって毎朝自動的に更新されます。
システム上のすべてのファイルやディレクトリの一覧がすでに整理されたデータベースを参照する仕組みのため、find よりもはるかに高速に実行できるのが特徴です。
locate に続けてファイル名を指定すると、そのファイルが存在する絶対パスが表示されます。
ここで、ホームディレクトリに新しいスクリプトを作成したと仮定しましょう。
この状態で新しく作成・コピーしたばかりのスクリプトを locate で検索しても、何も出力されません。
locate myscript
これは、cronによるデータベースの更新が毎朝1回しか行われないためです。日中にシステムへ追加されたファイルはデータベースに反映されていないため、updatedb コマンドを使って手動でデータベースを更新する必要があります。
sudo updatedb
データベースを更新した後に再度検索を実行すると、今度は目的のスクリプトがきちんと見つかります。
3. which ― 実行ファイルの絶対パスを調べる
ここまでファイル検索のコマンドを見てきましたが、続いて紹介するのは、システム上の実行ファイル(コマンド)の絶対パスを調べるのに役立つ which です。
同じ実行ファイル・スクリプト・バイナリが、システム内の複数の場所に存在することは珍しくありません。which は、$PATH および $MANPATH 環境変数で指定されたディレクトリの中から、指定した実行ファイルの存在を検索します。
オプションを付けずに実行した場合、which は見つかった最初の絶対パスのみを表示します。
-a オプションを付けると、指定した実行ファイルが見つかったすべての絶対パスが表示されます。
また、複数の実行ファイル名を続けて指定すれば、それらの絶対パスを一度に確認することもできます。
4. whereis ― バイナリ・ソース・マニュアルの場所をまとめて把握
whereis は、実行ファイルに関して次の3つの情報を一度に取得できるコマンドです。
- バイナリ本体の絶対パス
- そのバイナリのソースコードがシステム上に存在する場合の絶対パス
- そのバイナリのマニュアル(manページ)の絶対パス
例として「bzgrep」を見てみると、バイナリは /bin に、マニュアルは /usr/share/man/man1 に存在しており、ソースコードはこのシステム上には存在しないことがわかります。
whereis では、オプションを使って検索対象を絞り込むこともできます。-b オプションを付けるとバイナリの絶対パスのみを検索します。さらに -B オプションの後にディレクトリを列挙すれば、そのディレクトリ群だけを検索対象にできます。-f オプションの後に続ける名前が、情報を取得したいバイナリの指定になります。
同様に、-s オプションでソースコードのみ、-m オプションでマニュアルのみに検索を限定できます。-S および -M オプションの後にディレクトリ名を指定すれば、それぞれソースコードとマニュアルの検索対象ディレクトリを絞り込めます。
さらに、-l オプションを使うと、whereis が検索に使用するすべてのディレクトリの絶対パスが詳しく一覧表示されます。
まとめ
Linuxのターミナルでファイルを検索・特定するためのツールには事欠きません。本記事を通じて、find、locate、which、whereis という4つの便利な検索コマンドの特徴と使い分けのポイントを掴んでいただけたなら幸いです。さらに詳しい使い方を知りたい場合は、各コマンドのmanページに詳細なドキュメントが用意されているので、ぜひ活用してみてください。
-
Googleの逆画像検索で画像の出所と詳細を調べる方法
何か情報を調べたいとき、多くの人がまず頼るのがGoogleです。さらにGoogleでは、オンライン上に公開されたあらゆる写真を検索することもできます。では、すでに手元にある画像について、「この画像はどこから来たのか」「いつ公開されたのか」など、出所をもっと詳しく知りたい場合はどうすればよいのでしょうか。 幸い、Googleには「逆画像検索(画像による検索)」という便利な機能が用意されています。これを使えば、画像が最初にどこで・いつ公開されたのか、画像に写っている内容は何か、そしてインターネット上に存在するその他の関連情報まで、幅広く調べることが可能です。 画像の出所を調べる基本の手順 まずは
-
Googleドライブで目的のファイルやフォルダを素早く見つける検索術まとめ
Googleドライブをバックアップの保存先として利用していると、ファイルやフォルダが数万件に及ぶことも珍しくありません。そんな膨大なデータの中から「あのファイル」を探し出すのは、意外と骨の折れる作業です。本記事では、Googleドライブに搭載されたさまざまな検索機能を活用して、目的のデータを効率よく見つけるためのコツを詳しく解説します。 1. キーワードの一部だけでも検索してみる ファイル名の中に必ず含まれているはずの単語やフレーズが思い当たるなら、まずはそれを入力して検索してみましょう。Googleドライブは入力途中のキーワードからも候補をリアルタイムで提案してくれるため、完全なファイル名