コマンドラインを使用してLinuxでファイルとフォルダを検索する方法

ほとんどの人は、グラフィカルファイルマネージャーを使用して、GnomeのNautilus、KDEのDolphin、XfceのThunarなどのLinuxのファイルを検索します。ただし、使用するデスクトップマネージャーに関係なく、コマンドラインを使用してLinuxでファイルを検索する方法はいくつかあります。

検索コマンドの使用

「find」コマンドを使用すると、おおよそのファイル名がわかっているファイルを検索できます。このコマンドの最も単純な形式は、現在のディレクトリ内のファイルを検索し、指定された検索条件に一致するサブディレクトリを再帰的に検索します。名前、所有者、グループ、タイプ、権限、日付、およびその他の基準でファイルを検索できます。

プロンプトで次のコマンドを入力すると、現在のディレクトリで見つかったすべてのファイルが一覧表示されます。

見つける。

「find」の後のドットは、現在のディレクトリを示します。

特定のパターンに一致するファイルを見つけるには、-name引数を使用します。ファイル名のメタ文字(など*)を使用できますが、各メタ文字の\前にエスケープ文字()を付けるか、引用符で囲む必要があります。

たとえば、Documentsディレクトリで「pro」で始まるすべてのファイルを検索する場合は、cd Documents/コマンドを使用してDocumentsディレクトリに移動し、次のコマンドを入力します。

見つける。-名前pro \ *

「pro」で始まる現在のディレクトリ内のすべてのファイルが一覧表示されます。

注:findコマンドは、デフォルトで大文字と小文字を区別します。単語やフレーズの検索で大文字と小文字を区別しないようにする-iname場合は、findコマンドでこのオプションを使用します。これは、大文字と小文字を区別しないバージョンの-nameコマンドです。

find条件に一致するファイルが見つからない場合、出力は生成されません。

findコマンドには、検索を絞り込むために使用できる多くのオプションがあります。検索コマンドの詳細についてはman find  、ターミナルウィンドウで実行し、Enterキーを押してください。

位置特定コマンドの使用

Locateコマンドは、以前に構築されたデータベースを使用するため、findコマンドよりも高速ですが、findコマンドは、実際のすべてのディレクトリとファイルを実際のシステムで検索します。Locateコマンドは、指定された文字グループを含むすべてのパス名のリストを返します。

データベースはcronから定期的に更新されますが、いつでも自分で更新できるため、最新の結果を得ることができます。これを行うには、プロンプトで次のコマンドを入力します。

sudo updateb

プロンプトが表示されたら、パスワードを入力します。

Locateコマンドの基本的な形式は、検索条件のすべてまたは一部を含む、ルートから始まるファイルシステム上のすべてのファイルを検索します。

mydataを探す

たとえば、上記のコマンドは、「mydata」を含む2つのファイルと「data」を含む1つのファイルを検出しました。

検索条件のみを正確に含むすべてのファイルまたはディレクトリを検索する-b場合は、次のように、locateコマンドでオプションを使用します。

-b '\ mydata'を見つけます

上記のコマンドの円記号はグロブ文字であり、非特定のファイル名のワイルドカード文字を特定のファイル名のセットに展開する方法を提供します。ワイルドカードは、式が評価されるときに1つ以上の文字に置き換えることができる記号です。最も一般的なワイルドカード記号は、?単一の文字を表す疑問符()*と、連続する文字列を表すアスタリスク()です。上記の例では、円記号は「mydata」の「* mydata *」による暗黙的な置換を無効にしているため、「mydata」を含む結果のみが表示されます。

mlocateコマンドは、locateの新しい実装です。ファイルシステム全体にインデックスを付けますが、検索結果には、現在のユーザーがアクセスできるファイルのみが含まれます。mlocateデータベースを更新すると、タイムスタンプ情報がデータベースに保持されます。これにより、mlocateは、ディレクトリの内容を再度読み取ることなく、ディレクトリの内容が変更されたかどうかを知ることができ、データベースの更新を高速化し、ハードドライブへの負荷を軽減します。

mlocateをインストールすると、/ usr / bin / locateバイナリファイルがmlocateを指すように変更されます。mlocateをインストールするには、Linuxディストリビューションにまだ含まれていない場合は、プロンプトで次のコマンドを入力します。

sudo apt-get install mlocate

注:コマンドの実行可能ファイルが存在する場合は、その実行可能ファイルの場所を特定できるコマンドについては、この記事の後半で説明します。

mlocateコマンドは、標準のlocateコマンドと同じデータベースファイルを使用しません。したがって、プロンプトで次のコマンドを入力して、データベースを手動で作成することをお勧めします。

sudo /etc/cron.daily/mlocate

mlocateコマンドは、データベースが手動で作成されるか、スクリプトがcronから実行されるまで機能しません。

Locateまたはmlocateコマンドの詳細について  は、ターミナルウィンドウにman locateまたはman mlocateを入力してEnterキーを押してください。両方のコマンドで同じヘルプ画面が表示されます。

どのコマンドを使用する

「which」コマンドは、コマンドの発行時に呼び出される実行可能ファイルの絶対パスを返します。これは、デスクトップ、パネル、またはデスクトップマネージャーの他の場所にプログラムへのショートカットを作成するための実行可能ファイルの場所を見つけるのに役立ちます。たとえば、コマンドを入力すると、次which firefox の画像に示す結果が表示されます。

デフォルトでは、whichコマンドは最初に一致する実行可能ファイルのみを表示します。一致するすべての実行可能ファイルを表示するには-a、次のコマンドでオプションを使用します。

これ-Firefox

次の図に示すように、を使用して複数の実行可能ファイルを一度に検索できます。見つかった実行可能ファイルへのパスのみが表示されます。以下の例では、「ps」実行可能ファイルのみが見つかりました。

注:whichコマンドは、現在のユーザーのPATH変数のみを検索します。通常のユーザーとしてrootユーザーのみが使用できる実行可能ファイルを検索すると、結果は表示されません。

whichコマンドの詳細については、ターミナルウィンドウのコマンドプロンプトで「manwhich」(引用符なし)と入力し、Enterキーを押します。

Whereisコマンドの使用

whereisコマンドは、コマンドのバイナリ、ソース、およびマニュアルページファイルがどこにあるかを見つけるために使用されます。たとえばwhereis firefox 、プロンプトで入力すると、次の図に示すような結果が表示されます。

実行可能ファイルへのパスのみを表示し、ソースページと手動ページへのパスは表示しない場合は、この-bオプションを使用します。たとえば、コマンドwhereis -b firefox/usr/bin/firefox結果としてのみ表示されます。これは、プログラムのソースページやマニュアルページを検索するよりも、プログラムの実行可能ファイルを検索する頻度が高いため、便利です。ソースファイルのみ(-s)またはマニュアルページ(-m)のみを検索することもできます。

whereisコマンドの詳細についてはman whereis 、ターミナルウィンドウに入力してEnterキーを押してください。

Whereisコマンドとwhichコマンドの違いを理解する

whereisコマンドは、コマンドのバイナリ、ソース、およびマニュアルページの場所を表示しますが、whichコマンドは、コマンドのバイナリの場所のみを表示します。

whereisコマンドは、特定のディレクトリのリストでバイナリ、ソース、およびmanファイルを検索しますが、whichコマンドは、現在のユーザーのPATH環境変数にリストされているディレクトリを検索します。whereisコマンドの場合、特定のディレクトリのリストは、コマンドのマニュアルページの[ファイル]セクションにあります。

デフォルトで表示される結果に関しては、whereisコマンドは検出したすべてのものを表示しますが、whichコマンドは最初に検出した実行可能ファイルのみを表示します。-aこれは、前述のwhichコマンドのオプションを使用して変更できます。

whereisコマンドは、コマンドにハードコードされたパスのみを使用するため、探しているものが常に見つかるとは限りません。 whereisコマンドのマニュアルページにリストされていないディレクトリにインストールされていると思われるプログラムを検索する場合は-a、システム全体でコマンドのすべての出現箇所を検索するオプションを指定して、whichコマンドを使用することをお勧めします。