ウェブサイト検索

「find」コマンドを使用してディレクトリをより効率的に検索する方法


このチュートリアルでは、Linux でディレクトリを検索するさまざまな方法を説明します。すでにご存知かもしれませんが、Linux ではディレクトリを含むすべてがファイルです。 Linux ユーザーがコマンド ライン内で行う一般的な操作の 1 つは、ファイルまたはディレクトリの検索です。

コマンド ラインでファイルを検索するには、検索、検索どれなど、さまざまな手段やユーティリティが使用されます。ただし、最後のユーティリティ (どれ) はコマンドを見つけるためにのみ使用されます。

このチュートリアルの範囲では、主に find ユーティリティに焦点を当てます。このユーティリティは、ライブ Linux ファイルシステム上のファイルを検索し、locate と比較して効率的で信頼性が高くなります。

locate の欠点は、updatedb によって作成された 1 つ以上のデータベースを読み取ることであり、ライブ ファイル システムを検索しないことです。さらに、どこから検索するか (開始点) についても柔軟性がありません。

以下は、locate コマンドを実行するための構文です。

locate [option] [search-pattern]

locate の欠点を示すために、現在の作業ディレクトリで pkg という名前のディレクトリを検索していると仮定します。

: 以下のコマンドでは、オプション --basename または -blocate< を指示します。 は、ファイル (ディレクトリ) のベース名 (正確に pkg) のみに一致しますが、パス (/path/to/pkg) には一致しません。 \ がグロビング文字である場合、pkg*pkg* による暗黙的な置換が無効になります。

locate --basename '\pkg'

上記のコマンド出力からわかるように、locate はルート (/) ディレクトリから検索を開始します。そのため、同じ名前を持つ他のディレクトリが一致します。

したがって、この問題に対処するには、以下の簡略化された構文に従って検索を使用します。

find starting-point options [expression]

いくつかの例を見てみましょう。

現在の作業ディレクトリ内で上記と同じディレクトリ (pkg) を検索するには、次のコマンドを実行します。ここで、-name フラグは式を読み取ります。この場合、ディレクトリのベース名。

find . -name "pkg"

許可が拒否されました」エラーが発生した場合は、次のように sudo コマンドを使用します。

sudo find . -name "pkg"

次のように -type フラグを使用してファイルの種類 (以下のコマンドでは d はディレクトリを意味します) を指定することで、 find がディレクトリ以外の他のファイル タイプを検索しないようにすることができます。

sudo find . -type d -name "pkg"

さらに、ディレクトリを長いリスト形式でリストしたい場合は、アクション スイッチ -ls を使用します。

sudo find . -type d -name "pkg" -ls

次に、オプション -iname により、大文字と小文字を区別しない検索が有効になります。

sudo find . -type d -iname "pkg" 
sudo find . -type d -iname "PKG" 

さらに興味深く高度な使用法情報を見つけるには、findlocate のマニュアル ページを読んでください。

man find
man locate

最後に、locate コマンドと比較すると、Linux システム内のファイル (またはディレクトリ) を検索する場合、find コマンドの方が信頼性が高く効率的です。

以前と同様に、以下のコメントセクションからフィードバックや質問を忘れずにお送りください。最後に、 常にTecmint に接続したままにしてください。