この記事では、Linuxファイルシステム内のファイルを検索するための2つの便利なツールを紹介します。 1つ目はfindです コマンド。これは任意のLinuxディストリビューションにあり、2番目のコマンドは Locateです。 、インストールが必要です。
findコマンドはデフォルトでLinuxの一部です。検索を絞り込むための複数のパラメータを提供します。
最も簡単な検索コマンドは、現在地の名前で検索することです。
$ find -name "FILE_NAME"
ファイルを検索するディレクトリを指定できます:
$ find /home -name my_file.txt
$ find / -name my_other_file.txt
このコマンドでは大文字と小文字が区別されることを考慮してください。ケースの使用を無視したい場合:
$ find -iname "FILE_NAME"
指定されたパターンに準拠していないファイルを検索する場合は、 -notを使用して検索パラメーターを無効にすることができます。 パラメータまたは\! 。例:
$ find -not -name "FILE_NAME_TO_AVOID"
or
$ find \! -name "FILE_NAME_TO_AVOID"
ファイル コマンドを使用すると、ファイルタイプを検索することもできます。一般的なファイルタイプ記述子は次のとおりです。
-
f:通常のファイル -
d:ディレクトリ -
l:シンボルリンク -
c:キャラクターデバイス -
b:デバイスをブロックする
目的のファイルタイプは、 -typeの後に続きます 属性。
たとえば、 etcの下にあるすべてのJSONファイルを検索するには ディレクトリ:
$ find /etc -type f -name "*.json"
ファイルのサイズに応じて検索結果をフィルタリングするために使用されるパラメーターもあります: -size 。
サイズ単位には、次のサフィックスを使用できます。
-
c:バイト -
k:キロバイト -
M:メガバイト -
G:ギガバイト -
b:512バイトのブロック
また、正確なサイズについて話しているかどうかを指定するには、次のプレフィックスを使用します。
- 正確な検索 :プレフィックスなし
- 未満 :
-コード> プレフィックス - より大きい :
+プレフィックス
たとえば、ホームディレクトリの下にある3ギガバイトのファイルすべてを検索するには:
$ find /home -size 3G
3ギガバイト未満のすべてのファイルの場合:
$ find /home -size -3G
3ギガバイトを超えるファイル:
$ find /home -size +3G
最後のアクセス、変更、または変更時刻に従ってファイルを検索することもできます。
- アクセス時間 :
-atimeファイルが最後に読み取られたとき。 - 変更時間 :
-mtimeファイルの内容が最後に変更されたとき。 - 変更時間 :
-ctimeファイルのiノードメタデータが最後に変更されたとき。
参照ファイルと比較して、新しいファイルを返すこともできます。
$ find / -newer file_name
時間については、指定されたパラメータは日です。 。サイズによる検索と同じプレフィックスを使用できます:
$ find /home -mtime 3
$ find /home -atime -2
$ find /home -ctime +5
分単位の時間を使用してファイルを検索するには、次を使用できます。
$ find /home -mmin 3
所有者に応じてファイルを検索するためのパラメーターもあります( -user および-group )とその権限( -perm ):
$ find /home -user my_user
$ find /home -group my_group
$ find /home -perm 777
ディレクトリの下を検索する場合、 find コマンドは、他のサブディレクトリ内にある場合でも、そのディレクトリの下にあるすべてのファイルを返します。この深さを制御するには、最大深さ、最小深さ、またはその両方を定義できます。
たとえば、最上位ディレクトリと1つのレベルのサブディレクトリのみを検索するには、 -maxdepthを設定できます。 2へのパラメータ:
$ find -maxdepth 2 -name my_file
findの最小深度を定義するには -mindepthを使用して検索する必要があります パラメータ:
$ find -mindepth 5 -name my_file
これらのパラメータは組み合わせることができます:
$ find -mindepth 4 -maxdepth 7 -name my_file
深度コマンドで見たように、すべての find パラメータを組み合わせて、非常に具体的な結果を得ることができます。必要な結果が得られたら、 -execを使用してコマンドを実行できます。 パラメータ。
検索パラメータを組み合わせる場合は、-とを使用することもできます および-または 検索条件をパーソナライズするためのオプション。それらのいずれも使用されていない場合、-および オプションがデフォルトです。
たとえば、 / my_dirの下にあるすべてのファイルへのアクセス許可を変更するには 現在、664に対する777のアクセス許可を持つディレクトリは、次を使用します。
$ cd /my_dir
$ find . -type f -perm 777 -exec chmod 664 {} \;
locate コマンドはfindの代わりになります 。違いは、ファイルシステム内のファイルのデータベースを使用するため、より高速に実行できることです。 locateをインストールするには 使用できるツール:
- Ubuntu / Debianディストリビューションの場合:
$ sudo apt install mlocate`
- CentOS / RHELディストリビューションの場合:
$ sudo yum install mlocate`
Locateはcronジョブを使用してデータベースを毎日更新しますが、次を使用して手動で更新できます。
$ sudo updatedb
「ベース名」を検索する場合、つまり、クエリがファイルの名前にのみ含まれ、ファイルのパスには含まれない場合は、 -bを使用します。 フラグ:
$ locate -b name
まだ存在するファイルを検索するには(最後の updatedb の後) 呼び出し) -eを使用します フラグ:
$ locate -e name
生成されたデータベースからの統計には、次を使用します:
$ locate -S
Linuxコマンドラインでファイルを検索するのは難しいかもしれません。この記事で紹介するツールは、ファイルを処理および検索する簡単な方法を提供します。さまざまなパラメータを理解することで、検索を必要に応じて具体的にすることができます。
コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。