GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでファイルを検索するには、検索と検索を使用します

この記事では、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コマンドラインでファイルを検索するのは難しいかもしれません。この記事で紹介するツールは、ファイルを処理および検索する簡単な方法を提供します。さまざまなパラメータを理解することで、検索を必要に応じて具体的にすることができます。

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


Linux
  1. Linuxで最大のファイルとディレクトリを探す

  2. Locateコマンドを使用してLinuxでファイルをすばやく検索する

  3. Linuxで検索および検索コマンドを使用してファイルを検索する

  1. Linux の find コマンドを使用してファイルを検索する方法

  2. Linuxシェルスクリプトで正規表現を使用してファイルを検索する方法

  3. linux:最近変更されたタイプ *.php のファイルを検索します

  1. Linuxで「find」コマンドを使用して複数のファイル名(拡張機能)を検索する方法

  2. プロのようにLinuxでファイルとディレクトリを探す

  3. サイズと拡張子でファイルを検索する方法は?