はじめに
find
コマンドを使用すると、Linuxコマンドラインインターフェイスを使用して特定の文字列を検索できます。ファイル名に限定されないため、非常に実用的なツールです。これを使用して特定の場所を検索したり、検索の動作を制御するオプションを追加したり、追加のコマンドを使用して、検出したデータの管理方法を指示したりできます。
このチュートリアルでは、find
を使用してLinuxでファイルを検索および管理する方法を示します。 コマンド。

前提条件
- ターミナルウィンドウ/コマンドラインへのアクセス
- sudoのユーザーアカウント 特権
基本的な検索コマンド構文
基本的な構文 find
の コマンドは次の形式を使用します:
find <options> <location> <expression> <action> <name>
- 場所–
find
に指示します 検索語の検索を開始する場所。 - 表現 –
find
に通知します 探すべき情報のカテゴリ。 - アクション –アクション 属性は、検索結果に対してコマンドを実行します。これはオプションの要素です。
- 名前– 検索しているテキスト(またはその他のデータ)の文字列を表します。
- オプション– この属性は、
find
の必須要素ではありません 指図。動作を制御し、検索プロセスを最適化するために使用できます。
検索コマンドの使用方法
find
コマンドは、検索に含めた文字列のすべてのインスタンスを一覧表示します。 find
このコマンドを使用すると、検索パラメータ、オプション、場所を高レベルの精度で定義することもできます。
場所でファイルを検索
場所の文字列に基づいてファイルを検索するには、次のような簡単なコマンドを使用できます。
sudo find /home/user filename
このコマンドは、ユーザーを検索します ホームのアカウント ディレクトリ。どこを見たいかわからない場合は、検索場所を広げることができます。
たとえば、2つのユーザーアカウントがあり、どちらにファイルを保存したか覚えていない場合は、次のように入力できます。
sudo find /home filename
find
コマンドは/homeの下のすべてを検索します 検索語のディレクトリ(すべてのユーザーディレクトリを含む)。この例では、検索語はファイル名です。 。
ピリオドを使用する.
現在いるディレクトリを検索するには:
sudo find .
スラッシュを入力/
、システムはハードドライブ全体を検索します:
sudo find /
チルダ文字~
現在のユーザーのホームディレクトリを検索するために使用されます:
sudo find ~
findコマンドで式を使用する
式は、 find
に追加のパラメーターを適用します コマンド検索プロセス。最も一般的な式は-name
です。 。この式は、指定した場所で、 nameに入力した名前のファイルを検索します。 フィールド。
sudo find –name settings.txt
システムは、現在のディレクトリでsettings.txt。という名前のファイルを検索します。

システムは、検索語と完全に一致するファイル名のみを表示します。たとえば、ファイル名に大文字が含まれている場合、この制限により問題が発生する可能性があります。
find
を伝えるには 大文字/小文字を無視するには、 –iname
を使用します 次のような表現:
sudo find /home –iname filename
システムは/homeを検索します ディレクトリを作成し、ファイル名という名前のファイルを返します 、ファイル名 、さらにはファイル名 。
–type d
を使用します ファイルとディレクトリのどちらを検索するかを指定する式:
sudo find . –type d –name Videos
このコマンドは、現在のディレクトリ(ピリオド付き)で「ビデオ」という名前のディレクトリを検索します。 。」

デフォルトでは、 find
ファイルを検索しますが、 -type f
を使用してファイルを指定できます 。
検索された名前を含まないすべてのファイルを表示します:
sudo find . -not filename
指定された権限レベルのファイルを検索します:
sudo find . -perm 0000
特定のユーザー名が所有するすべてのファイルのリストを返します:
sudo find . -user username
最後に変更された00ファイルを表示します:
sudo find . -mtime 00
数値は、システムが表示するファイルの数を定義します。最後にアクセスした00個のファイルを表示します:
sudo find . -atime 00
20メガバイトを超えるすべてのファイルを表示する:
sudo find . -size +20M
ターミナルには、サイズ基準に一致するすべてのファイルのリストが表示されます。

検索されたアイテムのサイズを参照するコマンドを個別に使用して、特定のサイズよりも大きい、特定のサイズよりも小さい、または定義された範囲内のすべてのファイルを表示できます。
名前または拡張子を検索
name
属性は、検索のオブジェクトを定義します。 find
ツールは、入力した文字列が何であれ、指定された場所に移動します。通常、探しているファイルの名前は、コマンドの最後、場所、オプション、式の後にあります。
コマンドの最後に、標準の文字と数字が文字列として入力されます。特殊文字(ワイルドカード、ピリオド、スラッシュなど)では、名前を一重引用符で囲む必要があります。一重引用符は、システムがリクエストを正しく解釈することを保証します。
次のコマンドを入力して、 .htmlなどの特定の拡張子を持つファイルを検索します または.php :
sudo find . –type f –name ‘*.html’
システムは現在のディレクトリで通常のファイルを検索します( type –f
) 拡張子が.phpの 。この場合、アスタリスク( * 記号)はワイルドカードとして使用されます 、つまり、任意のタイプの任意の数の文字を表すことができます。

ワイルドカードは、ファイル名の一部しか覚えていない場合、または特定の拡張子を持つファイルを検索する場合に役立ちます。
findコマンドを使用してアクションを実行する
find
の使用方法を見てきました ターミナルウィンドウに検索結果を表示するコマンド。 アクション 属性を使用すると、その機能を強化し、ファイルが見つかったら特定のタスクを実行できます。
次のコマンドは、(ファイルの名前だけでなく)ファイルの実際のコンテンツを検索します。
sudo find ~ –type f –exec grep “contents” ‘{}’ \; –print
- システムにファイルを検索するように要求しています(
-type f
)ユーザーのホームディレクトリ(~
。 - システムにアクションを実行するように指示します(
-exec
)grep
を実行する すべてのファイルのコンテンツからcontentsという単語を検索するコマンド 。 -
{}
角かっこは、find
の一致結果を示します コマンド、およびそれらは一重引用符で囲まれているため、grep
コマンドはそれらを誤解しません。 -
grep
を終了します セミコロンを使用したコマンド(;
)、バックスラッシュを使用しています(\
)システムがセミコロンを命令として誤解しないようにします。 - 最後に、
–print
オプションは、結果を表示するようにシステムに指示します。
このコマンドをコピーしてターミナルウィンドウに貼り付け、検索パスを〜に置き換えます 文字、および単語contents。の検索語
find –exec
を使用できます ファイルのアクセス許可をすばやく変更するための組み合わせ:
sudo find /path –name “filename.ext” –exec chmod 777 ‘{}’ \;
このコマンドは–exec
を使用します chmod
を実行するコマンド ファイルのファイル権限を変更するにはfilename.ext 誰でも読み取り、書き込み、実行できるようにします。
findコマンドを使用してファイルを見つけて削除する
–delete
を使用 コマンドを使用すると、1つのコマンドで1つまたは複数のファイルをすばやく検索して削除できます。
この例では、 find
.htmlで終わるすべてのファイルを削除します 拡張。
sudo find . –name “*.html” –delete
このコマンドは、現在のディレクトリ(コマンドプロンプトに表示されている)で .htmlのすべてのファイルを検索します。 拡張子を付けて削除します。画像はプロセスの単純さを示しています。

このタイプのアクションは、“ * .bak” に置き換えた場合に、古いバックアップファイルを削除するのに役立ちます。 「*。bmp」の代わりに。
コマンドを見つけるためのオプションを追加
オプションは、 find
の検索パスの前に挿入される特殊な関数です。 コマンド文字列。 -L
、 -H
、および -P
シンボリックリンクの処理を制御するために使用されるオプションの要素です。
-
–P
このオプションは、デフォルトの動作を表します。システムはシンボリックリンクをたどりません。 -
-H
この特定のコマンドを処理している間を除いて、システムはシンボリックリンクをたどりません。 -
-L
シンボリックリンクをたどります。情報は、リンク先のファイルから取得されます。リンク自体ではありません。
オプションは検索最適化レベルを変更できます。検索プログラムが検索を整理する方法とその検索の実行速度を定義する3つの最適化レベルがあります。
- –O1この最適化レベルはデフォルトで使用されます。ファイル名に基づく検索が最初に実行されます。
- –O2タイプに基づく検索は、名前に基づく検索の直後に実行されます。他の検索が行われる前。
- –O3検索は、速度を最大化するために実行されます。他のクエリ要素に関係なく。