
find
コマンドは、Linuxシステム管理者の武器の中で最も強力なツールの1つです。ユーザーが指定した式に基づいてディレクトリ階層内のファイルとディレクトリを検索し、一致した各ファイルに対してユーザー指定のアクションを実行できます。
find
を使用できます 権限、タイプ、日付、所有権、サイズなどに基づいてファイルとディレクトリを検索するコマンド。 grep
などの他のツールと組み合わせることもできます またはsed
。
find
コマンド構文#
find
の一般的な構文 コマンドは次のとおりです:
find [options] [path...] [expression]
options
属性は、シンボリックリンク、デバッグオプション、および最適化方法の処理を制御します。path...
属性は、findがファイルを検索する開始ディレクトリを定義します。expression
属性は、オプション、検索パターン、および演算子で区切られたアクションで構成されています。
ディレクトリ内のファイルを検索するには、ユーザーがfind
を呼び出します。 コマンドには、そのディレクトリに対する読み取り権限が必要です。
次の例を見てみましょう:
find -L /var/www -name "*.js"
- オプション
-L
(オプション)find
に通知します シンボリックリンクをたどるコマンド。 -
/var/www
(パス…)検索するディレクトリを指定します。 - (式)
-name "*.js
find
に通知します.js
で終わるファイルを検索するには (JavaScriptファイル)。
名前でファイルを検索することは、おそらくfind
の最も一般的な使用法です。 指図。名前でファイルを検索するには、-name
を使用します オプションの後に検索するファイルの名前が続きます。
たとえば、document.pdf
という名前のファイルを検索するには /home/linuxize
にあります ディレクトリの場合、次のコマンドを使用します:
find /home/linuxize -type f -name document.pdf
大文字と小文字を区別しない検索を実行するには、-name
を変更します -iname
のオプション :
find /home/linuxize -type f -iname document.pdf
上記のコマンドは、「Document.pdf」、「DOCUMENT.pdf」などと一致します。
拡張子でファイルを検索することは、名前でファイルを検索することと同じです。たとえば、.log.gz
で終わるすべてのファイルを検索するには /var/log/nginx
内 ディレクトリには、次のように入力します。
find /var/log/nginx -type f -name '*.log.gz'
パターンを引用するか、アスタリスク*
をエスケープする必要があることに注意してください。 バックスラッシュ付きの記号\
ワイルドカード文字を使用したときにシェルによって解釈されないようにします。
正規表現*.log.gz
と一致しないすべてのファイルを検索するには -not
を使用できます オプション。たとえば、*.log.gz
で終わらないすべてのファイルを検索するには 使用するもの:
find /var/log/nginx -type f -not -name '*.log.gz'
通常のファイル、ディレクトリ、シンボリックリンクなどの特定のファイルタイプを検索する必要がある場合があります。 Linuxでは、すべてがファイルです。
タイプに基づいてファイルを検索するには、-type
を使用します オプションと、ファイルタイプを指定する次の記述子のいずれか:
-
f
:通常のファイル -
d
:ディレクトリ -
l
:シンボリックリンク -
c
:キャラクターデバイス -
b
:デバイスをブロックする -
p
:名前付きパイプ(FIFO) -
s
:ソケット
たとえば、現在の作業ディレクトリ内のすべてのディレクトリを検索するには、次を使用します。
find . -type d
一般的な例は、Webサイトのファイル権限を644
に再帰的に変更することです。 755
へのディレクトリ権限 chmod
を使用する コマンド:
find /var/www/my_website -type d -exec chmod 0755 {} \;
find /var/www/my_website -type f -exec chmod 0644 {} \;
ファイルサイズに基づいてファイルを検索するには、-size
を渡します サイズ基準とともにパラメータ。次のサフィックスを使用して、ファイルサイズを指定できます。
-
b
:512バイトブロック(デフォルト) -
c
:バイト -
w
:2バイトの単語 -
k
:キロバイト -
M
:メガバイト -
G
:ギガバイト
次のコマンドは、正確に1024
のすべてのファイルを検索します /tmp
内のバイト ディレクトリ:
find /tmp -type f -size 1024c
find
このコマンドを使用すると、指定したサイズより大きいまたは小さいファイルを検索することもできます。
次の例では、1MB
未満のすべてのファイルを検索します 現在の作業ディレクトリ内。マイナスの-
に注意してください サイズ値の前の記号:
find . -type f -size -1M
1MB
より大きいサイズのファイルを検索する場合 、次にプラスの+
を使用する必要があります 記号:
find . -type f -size +1M
サイズ範囲内のファイルを検索することもできます。次のコマンドは、1
の間のすべてのファイルを検索します および2MB
:
find . -type f -size +1M -size 21M
find
コマンドは、最後の変更、アクセス、または変更時刻に基づいてファイルを検索することもできます。
サイズで検索する場合と同じように、「より大きい」または「より小さい」にはプラス記号とマイナス記号を使用します。
数日前に、dovecot構成ファイルの1つを変更したが、どれを忘れたかを考えてみましょう。 /etc/dovecot/conf.d
の下にあるすべてのファイルを簡単にフィルタリングできます .conf
で終わるディレクトリ 過去5日間に変更されました:
find /etc/dovecot/conf.d -name "*.conf" -mtime 5
-daystart
を使用して変更日に基づいてファイルをフィルタリングする別の例を次に示します。 オプション。以下のコマンドは、/home
内のすべてのファイルを一覧表示します 変更されたディレクトリ30
以上:
find /home -mtime +30 -daystart
パーミッションでファイルを検索#
-perm
オプションを使用すると、ファイルのアクセス許可に基づいてファイルを検索できます。
たとえば、正確に775
の権限を持つすべてのファイルを検索するには /var/www/html
内 ディレクトリの場合、次を使用します:
find /var/www/html -perm 644
数値モードの前にマイナス-
を付けることができます またはスラッシュ/
。
/
をスラッシュする場合 プレフィックスとしてが使用される場合、少なくとも1つのカテゴリ(ユーザー、グループ、またはその他)で、ファイルが一致するように少なくともそれぞれのビットが設定されている必要があります。
次のコマンド例について考えてみます。
find . -perm /444
上記のコマンドは、ユーザー、グループ、またはその他のいずれかに設定された読み取り権限を持つすべてのファイルを照合します。
マイナスの場合-
プレフィックスとして使用され、ファイルが一致するためには、少なくとも指定されたビットが設定されている必要があります。次のコマンドは、所有者とグループの読み取りおよび書き込み権限があり、他のユーザーが読み取り可能なファイルを検索します。
find . -perm -664
特定のユーザーまたはグループが所有するファイルを検索するには、-user
を使用します および-group
オプション。
たとえば、ユーザーlinuxize
が所有するすべてのファイルとディレクトリを検索するには 、実行します:
find / -user linuxize
これが実際の例です。ユーザーwww-data
が所有するすべてのファイルを検索するとします。 一致したファイルの所有権をwww-data
から変更します nginx
へ :
find / -user www-data -type f -exec chown nginx {} \;
ファイルの検索と削除#
一致するすべてのファイルを削除するには、-delete
を追加します 一致式の最後にオプションを追加します。
結果が削除するファイルと一致することが確実な場合にのみ、このオプションを使用していることを確認してください。 -delete
を使用する前に、一致したファイルを印刷することをお勧めします。 オプション。
たとえば、.temp
で終わるすべてのファイルを削除するには /var/log/
から 、次を使用します:
find /var/log/ -name `*.temp` -delete
-delete
を使用します 細心の注意を払ってオプション。 find
コマンドは式として評価され、-delete
を追加すると オプションを最初に指定すると、コマンドは指定した開始点より下のすべてを削除します。
ディレクトリに関しては、find
rmdir
と同じように、空のディレクトリのみを削除できます 。
結論#
find
の使用方法を説明しました さまざまなオプションと基準を備えたコマンド。
この記事では、Linuxシステムでファイルを見つける方法の基本を理解する必要があります。 find
にアクセスすることもできます マンページとfind
の他のすべての強力なオプションについて読む コマンド。
ご質問やご意見がございましたら、下にコメントを残してください。