find コマンド
目的
照合式に一致するファイルを検索します。
構文
説明
find コマンドは、ディレクトリー・ツリーの中で、指定されたそれぞれの Path パラメーターを再帰的に検索し、ブール式と一致するファイルを探します。 ブール式は、以下のテキストに示す項を使用して記述されます。 find コマンドがディレクトリー構造を上から下へ再帰的に検索している場合は、現在の階層にシンボリック・リンクによってリンクしているディレクトリーを検索しません。 find コマンドからの出力は、Expression パラメーターで指定した項に応じて異なります。
find コマンドは 4.3 BSD 高速検索構文をサポートしません。
フラグ
| 項目 | 説明 |
|---|---|
| -H | コマンド・ラインで検出されたシンボリック・リンクに対して評価されたファイル情報とファイル・タイプが、リンクで参照されるファイル (リンク自体ではない) のファイル情報とファイル・タイプになります。 参照されるファイルが存在しない場合は、 ファイル情報とファイル・タイプはリンク自体に関するものです。 コマンド・ラインにないすべてのシンボリック・リンクに関するファイル情報は、 リンク自体のファイル情報です。 |
| -L | シンボリック・リンクに対して評価されたファイル情報とファイル・タイプが、 リンクで参照されるファイル (リンク自体ではない) のファイル情報とファイル・タイプになります。 |
式の項
| 項目 | 説明 |
|---|---|
| \(式\) | 括弧で囲まれている式が真であるとき、真となります。 |
| -amin N | n の値は、以下のいずれかの値とすることができます。
例えば、ファイルが 1 分から 2 分以内にアクセスされる場合、 -amin 2 は true です。 注: find コマンドの開始時刻より後にアクセスされるファイルは考慮されません。 ただし、 find コマンドがUNIX03 以外の動作のために単項
NOT 演算子内で使用される場合、コマンドの開始時刻より後に変更されたファイルは、 nの値まで表示されます。 |
| -atime N | n の値は、以下のいずれかの値とすることができます。
注: -atime の定義は、Single UNIX Specification、バージョン 3 に準拠するように変更されています。 ファイルが 24 時間の n-1 から n の倍数でアクセスされた場合、 -atime の以前の動作は True と評価されます。 デフォルトでは、
find -atime は UNIX03より前と同様に機能します。 UNIX03 の動作は、環境変数 XPG_SUS_ENV を ON に設定し、 XPG_UNIX98 を OFFに設定することによって取得できます。このオプションの以前の動作は、 XPG_UNIX98 変数を find コマンドの開始時間以降にアクセスしたファイルは考慮されません。 ただし、 find コマンドがUNIX03 以外の動作のために単項 |
| -cmin N | n の値は、以下のいずれかの値とすることができます。
注: find コマンドの開始時刻より後に変更された i ノードを持つファイルは考慮されません。 ただし、 find コマンドがUNIX03 以外の動作のために単項
NOT オペレーター内で使用される場合、コマンドの開始時刻より後に変更された i ノードを持つファイルは、 nの値まで表示されます。 |
| -cpio Device | 現行ファイルを指定されたデバイスに cpio コマンド・フォーマットで書き込みます。 |
| -ctime N | n の値は、以下のいずれかの値とすることができます。
注: -ctime の定義は、Single UNIX Specification、バージョン 3 に準拠するように変更されています。 ファイルが 24 時間の n-1 から n の倍数でアクセスされた場合、 -ctime の以前の動作は True と評価されます。 デフォルトでは、
find -ctime は UNIX03より前と同様に機能します。 UNIX03 の動作は、環境変数 XPG_SUS_ENV を ON に設定し、 XPG_UNIX98 を OFFに設定することによって取得できます。このオプションの以前の動作は、 XPG_UNIX98 変数を find コマンドの開始時間以降に i ノード変更したファイルは考慮されません。 ただし、 find コマンドがUNIX03 以外の動作のために単項 |
| -depth | 値は常に真となります。 ディレクトリー階層を下位方向に検索していくので、ディレクトリー内のすべてのエントリーが、ディレクトリーそのものよりも先に影響を受けます。 それは、find コマンドを cpio コマンドと一緒に 使用して、書き込み許可を持たないディレクトリー内に含まれているファイルを転送する場合に便利です。 |
| -ea | ファイルにアクセス制御リスト (ACL) または拡張属性 (EA) が設定されていれば、値は真と評価されます。 |
| -exec Command | 指定したコマンドが実行されて、終了状況として値 0 が戻されるとき、値は真となります。 指定したコマンドの終わりには、引用符で囲んだセミコロン、エスケープされたセミコロン、または正符号を付ける必要があります。 2 つの文字 {} (中括弧) を含む引数の後には、指定したコマンドの終わりを示す正符号を付ける必要があります。 コマンド・パラメーター {} (中括弧) は現行パス名に置き換えられます。 |
| -follow | シンボリック・リンクおよびハード・リンクが後に続くようにします。 |
| -fstype Type | ファイルが属しているファイルシステムが指定されたタイプであるとき、値は真となります。 Type 変数の値には jfs (ジャーナル・ファイルシステム)、nfs (ネットワーク・ファイルシステム)、jfs2 (拡張ジャーナル・ファイルシステム)、procfs (proc ファイルシステム)、または namefs (名前ファイルシステム) が入っています。 |
| -group Group | ファイルが指定したグループに属するとき、値は真になります。 Group 変数の値が数値で、/etc/group ファイルに 無い場合は、グループ ID と解釈されます。 |
| -inum N | ファイルの i ノード番号が n 変数の値と一致するとき、値は真となります。 |
| -links N | ファイル内に、指定した数のリンクがあるとき、値は真となります。 リンクについての説明は、ln コマンドを参照してください。 |
| -iregex 正規表現 (regular_expression) | ファイルのパス名全体が正規表現と一致する場合、値は真となります。 このオプションは -regex オプションと似ていますが、突き合わせの際に大/小文字を区別しない点は異なります。 |
| -long | -lsと組み合わせて使用すると、最初の 8 文字に切り捨てずに、各ユーザー/グループ名の使用可能なすべての文字が印刷されます。 |
| -ls | 値は常に真となります。 現行パス名を関連する統計と一緒に表示します。 これらの統計には、以下の値が含まれます。
ファイルがスペシャル・ファイルの場合、 サイズ・フィールドにはメジャー・デバイス番号とマイナー・デバイス番号が含まれます。 ファイルがシンボリック・リンクの場合、リンク先のファイルのパス名が -> (ハイフン、より大) シンボルに続いて出力されます。 このフォーマットは、ls -filds コマンドのフォーマットと似ていますが、フォーマット化は、ls コマンドを実行せずに内部的に行われます。 このため、ls コマンドの出力結果とは異なる場合があります (保護モードの出力の有無など)。 |
| -mmin N | n の値は、以下のいずれかの値とすることができます。
注: find コマンドの開始時刻より後に変更されたファイルは考慮されません。 ただし、 find コマンドがUNIX03 以外の動作のために単項
NOT 演算子内で使用される場合、コマンドの開始時刻より後に変更されたファイルは、 nの値まで表示されます。 |
| -mtime N | n の値は、以下のいずれかの値とすることができます。
注: -mtime の定義は、 Single UNIX Specification、バージョン 3に準拠するように変更されました。 -mtime の以前の動作は、ファイルが n-1 から 24 時間の n 倍に変更された場合に真と評価されます。 デフォルトでは、 find -mtime は UNIX03より前のように動作します。 UNIX03 の動作は、環境変数 XPG_SUS_ENV を
ON に設定し、 XPG_UNIX98 を OFFに設定することによって取得できます。このオプションの以前の動作は、 XPG_UNIX98 変数を find コマンドの開始時間以降に変更したファイルは考慮されません。 ただし、 find コマンドがUNIX03 以外の動作のために単項 |
| -name ファイル | File 変数の値がファイル名と一致するとき、値は真となります。 通常の
シェル・ファイル名生成文字 (sh コマンドを参照) が使用できます。 パターンは、引用符またはエスケープ文字で囲む必要があります。 find コマンドがシェルから使用される場合は、エスケープ文字が使用されます。 円記号 (¥) は、パターン内ではエスケープ文字として使用されます。 ワイルドカード (パターン・マッチング) 文字は、引用符で囲めば使用できます。 [a-z] のような式で、ハイフンは、現行の照合シーケンスによって
からを意味します。 照合シーケンスは文字範囲内で使用する等価クラスを定義できます。 照合シーケンスと等価クラスの詳細については、『Globalization Guide and Reference』の「 |
| -newer ファイル | 現行ファイルが、File 変数で指定したファイルよりも後に変更された場合、値は真となります。 |
| -nogroup | ファイルが /etc/group データベース以外のユーザーに属するとき、値は真となります。 |
| -nouser | ファイルが /etc/passwd データベースに無いユーザーに属するとき、 値は真となります。 |
| -ok コマンド | -exec 式と同じですが、find コマンドは、指定されたコマンドを開始する必要があるかどうかをユーザーに確認します。 ユーザーが肯定応答すると、そのコマンドを始動します。 指定したコマンドの末尾には、引用符で囲んだセミコロンまたは ¥; (円記号 (エスケープ) と セミコロン) を付けなければなりません。 |
| -perm [-] OctalNumber | ファイルの許可コードが OctalNumber パラメーターと正確に一致する場合、
値は真となります。 ファイルの許可については、chmod コマンドのセクションを参照してください。 オプションの - (ハイフン) がある場合は、少なくともこれらの許可が設定
されていれば、この式の値は真になります。 OctalNumber パラメーターには最高 9 個までの 8 進数を指定できます。 注: TCB 環境の一部であるファイルの場合、追加のセキュリティー・ビットがファイルの許可に追加されます。 これらのファイルには S_ITCB ビットが設定されており、セキュリティー・ビット・セットは 0x010000000 と定義されます。 よって、TCB 対応ファイルの 8 進数の許可の値には、ビット設定 100000000 がその他の許可ビットと一緒に含まれている必要があります。
例: TCB 環境の一部であるファイルをリストするには、find -perm 100000600 -print と入力します。 それによって、オーナー読み取り許可とオーナー書き込み許可のみを持ち、TCB 環境の一部であるファイル名がリストされます。 許可コードについての説明は、chmod コマンドを参照してください。 |
| -perm [ - ] Mode | ファイル・モード・ビットを表すのに、mode 引数が使用されます。 これは、 chmodで説明されている < symbolicmode> オペランドと同じ形式であり、次のように解釈されます。 最初に、テンプレートは、すべてのファイル・モード・ビットがクリアされているものと想定されます。 オペランド・シンボル (-) には、以下の機能があります。
オペランド・シンボル ハイフンが省略されている場合、ファイル許可ビットが、結果として生じるテンプレートの値と正確に一致すると、 プライマリーは真として評価します。 そうでない場合、つまり、モードに、ハイフンがプレフィックスとして付いている場合、 少なくとも、結果として生じるテンプレート内のすべてのビットがファイル許可ビット内に設定されていれば、 プライマリーは真として評価します。 Mode パラメーターのコマンド構文は、chmod コマンド構文と同一です。 この式は、ファイルにこれらの許可が正確に付いていれば、値は真となります。 オプションの - (ハイフン) がある場合は、少なくともこれらの許可が設定 されていれば、この式の値は真になります。 |
| 値は常に真となります。 現行パス名を表示します。 find コマンドは、-exec, - ls または -ok のいずれかの式を指定しない限り、-print 式を想定します。 | |
| -prune | 値は常に真となります。 現行パス名がディレクトリーの場合は、そこから下位のパス名の検索は行われません。 -depth フラグを指定すると、-prune フラグは無視されます。 |
| -size N | ファイルの長さが指定した n ブロック (1 ブロックは 512 バイト) であるとき、値は真となります。 比較を行うために、ファイル・サイズはブロック単位に切り上げられます。 |
| -regex 正規表現 (regular_expression) | ファイルのパス名全体が正規表現と一致する場合、値は真となります。 このオプションでは正規表現の検索は行いませんが、ファイルの完全パス名と正規表現の突き合わせは行います。 例えば、./test という名前のファイルを突き合わせる場合、.*test.* または .*t.*t という正規表現を使用することができますが、t.*t は使用できません。 |
| -regextype Type | 値は常に真となります。 このオプションでは、-regex オプションと -iregex オプションにおける正規表現の構文のタイプを指定します。 このオプションは、コマンド・ラインの後ろの方にある正規表現にも影響します。 Type 変数には、次のいずれかの値を指定できます。
注: -regextype オプションを使用しない場合、正規表現は
basicとして解釈されます。 |
| -size nc | ファイルの長さが正確に、指定した n バイトであるとき、値は真となります。 c を n 変数の末尾に追加すると、ファイルのサイズがブロック単位ではなく個々のバイト単位で測定されることを示します。 |
| -type タイプ | Type 変数が次のいずれかの値を示すと、値は真となります。
|
| -user ユーザー | ファイルが指定したユーザーに属するとき、値は真となります。 User 変数の値が数字で、/etc/passwd ファイルに ログイン名として記述されていない場合は、ユーザー ID と解釈されます。 |
| -xdev | 値は常に真となります。 find コマンドは、Path パラメーターで指定されたファイルシステムをまたがって検索するのを防止します。 |
これらの式は、次の演算子を優先順位が高い方から順に使用して組み合わせることができます。
- ( Expression) - 括弧で囲まれた式と演算子のグループ (括弧はシェル専用で、円記号のエスケープ・シーケンスが必要です)。
- ! Expression -式の否定 ('!' は単項 NOT 演算子です)。
- Expression [ -a ] Expression - 式の連結 (AND 演算は 2 個の式を並置して暗黙に指定するか、またはオプションの -a 演算子として明示的に記述することができます)。
- Expression -o Expression - 式の論理和。-o は OR 演算子です。 第 1 の式が真であれば、第 2 の式は計算されません。
-follow オプションと -L オプションを使用する必要があります。 これら 2 つのオプションを一緒に使用しなければ、望ましくない結果が生じます。 式が存在しない場合は、-print がデフォルトの式の中で使用されます。 例えば、指定された式に 1 次式 -exec、 -ok、または -printのいずれも含まれていない場合、式は (given_expression)
-printに置き換えられます。 -user、-group、および -newer プライマリーは、
それぞれの引数を 1 回だけ評価します。 -exec または -ok によって指定されたコマンドを使用しても、
同じファイル上のその後のプライマリーに影響しません。終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | すべての Path パラメーターが正常に処理されました。 |
| >0 | エラーが発生しました。 |
例
- 指定した基本ファイル名を持つ、ファイルシステム内のすべてのファイルをリストするには、次のように入力します。
このコマンドによって、ファイルシステム全体が検索され、.profile と いう名前のすべてのファイルの完全なパス名が書き出されます。 この /(スラッシュ) は、ルート・ディレクトリーとそのすべてのサブディレクトリーを検索するように find コマンドに指示します。 時間の無駄を省くには、ファイルが入っていると思われるディレクトリーを指定して、検索範囲を限定するのが最善の方法です。find / -name .profile -print - 現行ディレクトリー・ツリー内で、特定の許可コードの付いたファイルをリストするには、次のように入力します。
このコマンドによって、オーナー読み取り許可とオーナー書き込み許可のみを持ったファイルの名前がリストされます。 . . (ドット) は find コマンドに対して現行ディレクトリーとそのサブディレクトリーを検索するよう指示します。 許可コードについての説明は、chmod コマンドを参照してください。find . -perm 0600 -print - いくつかのディレクトリー内で特定の許可コードの付いたファイルを検索するには、次のように入力します。
このコマンドによって、オーナー読み取り許可とオーナー書き込み許可、およびその他の考えられる許可の付いたファイル名がリストされます。 このmanual,clientsおよびproposalsディレクトリーとそのサブディレクトリーが検索されます。 前の例では、-perm 0600一致する許可コードを持つファイルのみを選択します0600正確に この例では以下のようにします。-perm -0600によって示されるアクセスを許可する許可コードを持つファイルを選択します。0600および上記の他のアクセス0600レベル。 許可コード 0622 と 0744 も適合します。find manual clients proposals -perm -0600 -print - この 24 時間以内に変更された現行ディレクトリー内のすべてのファイルをリストするには、次のように入力します。
find . -ctime 1 -print - 複数のリンクがある正規ファイルを検索するには、次のように入力します。
このコマンドは、通常ファイルの名前をリストします (-type f) 複数のリンクを持つ (-links +1).find . -type f -links +1 -print注: 各ディレクトリーには、少なくとも 2 つのリンクがあります。親ディレクトリー内の項目とそれ自体の項目です。.(ドット) 項目。 複数のファイル・リンクについては、ln コマンドのセクションで説明します。 - パス名に find が含まれているすべてのアクセス可能なファイルを検索するには、次のように入力します。
find . -name '*find*' -print - 指定されたすべてのファイルを削除するにはa.outまたは*.o1週間アクセスされず、'
nfsマウントされていないもの:find / \( -name a.out -o -name '*.o' \) -atime +7 ! -fstype nfs -exec rm {} \;注: -atime 式内で使用される番号は+7です。 これは、アクセスされなかった時間が 1 週間 (24 時間の期間が 7 つ) を超えるファイルに対してコマンドを実行する場合の正しいエントリーです。 SCCSという名前のディレクトリーまたはSCCSディレクトリー内のファイルを除く、現行ディレクトリー内、またはその下のすべてのファイルのパス名を表示するには、次のように入力します。find . -name SCCS -prune -o -printSCCSディレクトリーの名前を含む、現行ディレクトリー内、またはその下のすべてのファイルのパス名を表示するには、次のように入力します。find . -print -name SCCS -prune- 長さが正確に 414 バイトのファイルをすべて検索するには、次のように入力します。
find . -size 414c -print - .c という接尾部の付いたホーム・ディレクトリー内のすべてのファイルを検索して除去するには、次のように入力します。
find コマンドが .c という接尾部でファイルを識別するたびに、rm コマンドがそのファイルを削除します。 rm コマンドは -exec 式に対して指定される唯一のパラメーターです。 { } (中括弧) は現行パス名を表します。find /u/arnold -name "*.c" -exec rm {} \; - この例では、
dirlinkはディレクトリーdirへのシンボリック・リンクです。 コマンド・ラインでシンボリック・リンクdirlinkを参照することにより、dir内のファイルをリストするには、次のように入力します。find -H dirlink -print - この例では、
dirlinkはディレクトリーdirへのシンボリック・リンクです。dirlink内のファイルをリストし、すべてのシンボリック・リンクを含むdirの下のファイル階層をトラバースするには、次のように入力します。find -L dirlink -print - シンボリック・リンク
dirlinkで参照されるファイルdir1がdir2より新しいかどうかを判別するには、次のように入力します。find -H dirlink -newer dir2注: -H フラグが使用されているため、時間データはdirlinkからではなく、dir1から収集されます。これは、シンボリック・リンクをトラバースすることによって検出されます。 - カレント・ディレクトリにあるファイルの一覧を、ユーザー名とグループ名を拡張した'lsフォーマットで作成するには、次のようにタイプする:
find . -ls -long - 現行ディレクトリー内の ACL/EA 設定のファイルをリストするには、次のように入力します。
find . -ea - 60 分以内に変更されたファイルをリストするには、次のように入力します。
find . -mmin -60 - /homeディレクトリー内のパス名に「
afileパターンを含むパス名をすべて見つけるには、次のコマンドを入力する:find /home -regextype basic -regex ".*afile.*" - /homeディレクトリー内のパス名に「
afileまたは「capパ ターンを含むすべてのパス名を検索するには、次のコマンドを入力する:find /home -regextype extended -regex ".*afile.*|.*cap.*" - /homeディレクトリー内で、パス名にパターン「
afile、「AFILE、「cap、「CAp」を含むすべてのパス名を見つけるには、以下のコマンドを入力する:find /home -regextype extended -iregex ".*afile.*|.*cap.*"
ファイル
| 項目 | 説明 |
|---|---|
| /usr/bin/find | find コマンドが入っています。 |
| /bin/find | find コマンドへのシンボリック・リンク。 |
| /etc/group | すべての既知グループのリストが入っています。 |
| /etc/passwd | すべての既知ユーザーのリストが入っています。 |