
findコマンドは、オペレーティングシステムのようなLinuxおよびUnixでファイルを検索するために使用される強力な検索ユーティリティです。名前、拡張子、タイプ、変更と作成日、権限、サイズ、所有者などのさまざまな基準に基づいてファイルとディレクトリを見つけることができます。
検索では、コマンドに基づいてファイルの検索などのアクションを実行したり、削除、カウントなどを実行したりすることもできます。
このチュートリアルでは、findコマンドの使用方法の説明と、例の説明に焦点を当てます。
構文:
findの基本構文 コマンドの使用法は次のとおりです。
find <directory-to-search> [OPTIONS] <find name,file,extension>
-H
および-L
オプションは、検索中にシンボリックリンクを管理するために使用されます。-P(シンボリックリンクをたどらない)および-L(シンボリックリンクをたどる)。
1。名前でファイルを検索
名前でファイルを検索するには 、-name
を指定してfindコマンドを使用します オプション。
Documentsディレクトリで「nginx.yaml」という名前のファイルを検索する場合は、次のコマンドを実行できます。
$ find /Documents -name nginx.yaml
これにより、Documents /およびすべてのサブディレクトリに「nginx.yaml」という名前のファイルが見つかります:
さらに、現在のディレクトリとそのすべてのサブディレクトリでファイル「nginx.yaml」を検索するには、次のコマンドを実行します。
$ find -name nginx.yaml
findコマンドの後のピリオド(。)は、現在のディレクトリから検索を開始することを示します。
$ find . -name nginx.yaml
2。拡張子でファイルを検索
拡張子ですべてのファイルを検索する場合 、-name
でfindコマンドを使用できます *。
たとえば、次のコマンドを実行して、ホームディレクトリで拡張子が「.png」のすべてのファイルを検索できます。
$ find $HOME -name *.png
3。ディレクトリのみを検索
ディレクトリのみを検索する場合 、-type d
を使用してfindコマンドを実行できます オプション。
Documents /フォルダ内のすべてのディレクトリを検索するとします。実行してみましょう:
$ find /Documents -type d
4。ファイルのみを検索
Linuxには、ディレクトリ、シンボリックリンク、ソケット、通常のファイルなど、さまざまな種類のファイルがあります。通常のファイルのみを検索する場合 、'-typef'オプションを指定してfindコマンドを実行できます。
たとえば、現在のディレクトリにファイルしかないと仮定して、次のコマンドを実行してみましょう。
$ find . -type f
5。検索して削除
状況によっては、検索して削除したい場合があります 不要になったファイル/ディレクトリについては、「-delete」オプションを指定してfindコマンドを実行できます。
たとえば、Documents /フォルダに*.png拡張子が付いているすべての画像を検索し、それらを削除します。
$ find /Documents -name *.png -delete
6。特定の権限を持つファイルを検索する
特定の権限を持つすべてのファイルを検索する場合 、「-perm」オプションを指定してLinuxのfindコマンドを使用できます。
たとえば、「755」権限を持つファイルを見つけるには、次のコマンドを実行します。
$ find . -type f -perm 775 -exec ls -l {} \;
7。日付/時刻でファイルとディレクトリを検索
Linuxのfindコマンドを使用すると、日付/タイムスタンプでファイルとディレクトリを検索できます。
'-mtime -N'オプションを指定してfindコマンドを使用すると、'N'日前に最後に変更されたファイルを検索できます。たとえば、現在のディレクトリで過去2日間に変更されたすべてのファイルを検索するには、次のコマンドを実行します。
$ find . -type f -mtime -2 -exec ls -l {} \;
findコマンドを使用して日付/時刻でファイル/ディレクトリを検索する別の方法は、「-newerXY」オプションを使用することです。 XとYの場合:
a
-参照ファイルのアクセス時間
B
-参照ファイルの誕生時刻
c
-参照ファイルのiノードステータス変更時間
m
-参照ファイルの変更時間
t
-参照は時間として直接解釈されます
たとえば、2020年7月4日に変更されたすべてのファイルを現在のディレクトリで検索するには、次のコマンドを実行します。
$ find . -type f -newermt 2020-07-04 -ls
8。サイズでファイルとディレクトリを検索
Linuxのfindコマンドを使用すると、「-size」オプションを指定してコマンドを実行することにより、サイズでファイル/ディレクトリを検索できます。
1GBを超えるファイルを検索する場合は、次のコマンドを実行できます。
$ find . -type f -size +1G
いくつかの実用的な例
01)空のファイル/ディレクトリを見つける
この出力には、現在のディレクトリとサブディレクトリ内のすべての空のファイルとフォルダが一覧表示されます。
$ find . -empty -ls
02)すべての.jpgファイルを検索
$ find . -name *.jpg
03)644の権限を持つすべてのディレクトリを検索
出力には、現在のディレクトリまたはサブディレクトリ内で644のアクセス許可を持つすべてのフォルダが表示されます。
$ find . -type d -perm 644 -ls
04)特定のユーザーが所有するファイルを検索する
現在のディレクトリの下にあるユーザー「cas」が所有するすべてのファイルを確認する場合は、次のように実行できます。
$ find . -user cas -ls
05)iノード番号でファイルを検索
iノード番号でファイルを検索するには、find with -inum
を使用できます。 オプション。例:
$ find -inum 534937
06)ファイルの数を数える
$ find -type f -exec basename {} \; | wc -l
07)ディレクトリの数を数える
$ find -type d -exec basename {} \; | wc -l
08)特定の深さのファイルを検索する
次のレベルのサブディレクトリではなく、HOMEフォルダとそのサブディレクトリでファイル「Dockerfile」を検索する場合は、次のように「-maxdepth」オプションを2に設定する必要があります。
$ find $HOME -maxdepth 2 -name Dockerfile
結論
もう1つの強力なツールは、コマンドの検索に代わるfdコマンドです。
このチュートリアルでは、Linuxのfindコマンドを使用してファイルとディレクトリを検索する方法を学びました。読んでいただきありがとうございます。以下のコメントセクションに提案を残してください。