名前
find - ディレクトリ階層下のファイルを検索する。
書式
find [path...] [expression]
説明
このマニュアルページは GNU 版 find の使用法を記述したものである。 find は与えられたファイル名以下のディレクトリツリーを検索し、 同じく与えられた評価式を左から右に向かって優先順位の高いものから評価する (演算子のセクションを見よ)。 評価式の結果が確定すると (and の左項が偽だったり、 or の左項が真だった場合など) 評価は終了し、 引き続き次のファイル名が評価される。
-, (, ), ,, または ! ではじまる最初の引き数は、 評価式の始まりであるとみなされる。 その前の引き数は検索するパスとなる。 パスが与えられない場合はカレントディレクトリ以下を検索する。 評価式が与えられない場合は -print が評価式として用いられる。
find は全てのファイルの処理に成功するとステータス 0 を返して終了する。 エラーがあった場合には 0 以上の値を返す。
評価式
評価式はオプション、判別式、及びアクションからなる。 オプションは特定のファイルのみでなく全体の処理に影響し、常に真を返す。 判別式は真または偽の値を返す。 アクションは付加的な作用を持ち、真または偽を返す。 評価式のそれぞれの要素は演算子によって区切られている。 演算子が省略された場合は -and が指定されたものとされる。 -prune 以外のアクションが評価式に含まれていない場合は、 評価式の結果が真となったファイルに対して -print が実行される。
オプション
全てのオプションは常に真を返す。また全てのオプションは常に効力を持ち、 式の評価がオプションの位置に到達したときにのみ実行される訳ではない。 従って記述を明確にするためには、 全てのオプションは評価式の先頭部にまとめて置くのが望ましい。
-daystart | -amin、 -atime、 -cmin、 -ctime、 -mmin、 -mtime の時間の基準を 24 時間前ではなく、コマンドを実行した日の 0 時にする。 |
-depth | ディレクトリ本体の前に、ディレクトリの内容を先に評価する。 |
-follow | シンボリックリンクの参照先を検索する。 -noleaf は自動的に指定されたこ とになる。 |
-help, --help | find のコマンドラインの使用方法の概要を表示して 終了する。 |
-maxdepth levels | コマンドライン引き数から降りて検索するディレクトリレベルの最大値を指定 する (levels は非負の整数)。 -maxdepth 0 はコマンドライン引 き数のみを評価し、アクションの対象にすることを意味する。 |
-mindepth levels | levels (非負整数) 未満のレベルのディレクトリには評価やアクショ ンを行わない。 -mindepth 1 とすると、コマンドライン引き数で指定した ファイルを除き、全てのファイルを処理する。 |
-mount | 他のファイルシステムにあるディレクトリを探索しない。 -xdev の別名であり、 他の版の find との互換性のために用意された。 |
-noleaf | 「ディレクトリのハードリンク数から 2 を引いたものが、 そのディレクトリに含まれるサブディレクトリである」とする最適化動作を行わない。 このオプションは Unix のディレクトリリンク方式に従わない ファイルシステムを検索するときに必要となる (例えば CD-ROM や MS-DOS ファイルシステム、 AFS ボリュームなど)。 通常の Unix ファイルシステムでは、 それぞれのディレクトリは最低二つのハードリンクを持っている (ディレクトリ名のエントリと . エントリ)。 またサブディレクトリがある場合には、 それぞれのサブディレクトリ内にさらに .. と言うエントリができる。 find がディレクトリを調べる際、 そのディレクトリのハードリンクの数よりも 2 少ないエントリがサブディレクトリであることが判明したら、 残りのエントリはディレクトリではないものとされる (ディレクトリツリーの leaf (葉) であるとみなされる)。 もしファイル名だけが必要な場合には、 そのファイルの内容は評価されない。 この最適化を用いると、検索の速度が非常に向上する。 |
-version, --version | find のバージョンを表示して終了する。 |
-xdev | 他のファイルシステムにあるディレクトリは探索しない。 |
判別式
数値の引き数を
+n | と表わすと n より大きいことを示し、 | ||||||||||||||
-n | と表わすと n より小さいことを示す。 | ||||||||||||||
n | はちょうど n と等しいことを示す。 | ||||||||||||||
-amin n | ファイルが最後にアクセスされたのが n 分前であれば真。 | ||||||||||||||
-anewer file | file が修正された以降にアクセスされたファイルに対して真を返す。 -follow がコマンドライン上で -anewer より前に指定されている場合に限り、 -anewer は -follow による影響を受ける。 | ||||||||||||||
-atime n | ファイルが最後にアクセスされたのが n*24 時間前であれば真。 | ||||||||||||||
-cmin n | ファイルのステータスが最後に変更されたのが n 分前であれば真。 | ||||||||||||||
-cnewer file | file が修正された以降にファイルステータスが変更されたファイルに 対して真を返す。 -follow がコマンドライン上で -cnewer より前に指定されている場合に限り、 -cnewer は -follow による影響を受ける。 | ||||||||||||||
-ctime n | ファイルのステータスが最後に変更されたのが n*24 時間前であれば真。 | ||||||||||||||
-empty | ファイルが空で、通常のファイルかディレクトリならば真。 | ||||||||||||||
-false | つねに偽。 | ||||||||||||||
-fstype type | ファイルが置かれているファイルシステムが type ならば真。 用いることのできるファイルシステムは Unix のバージョンによって異なる。 あるバージョンの Unix では ufs や 4.2, 4.3, nfs, tmp, mfs, S51K, S52K といったようなものが指定可能である。 -printf を %F 書式指定子と共に用いれば、 どのようなファイルシステムを使っているかがわかる。 | ||||||||||||||
-gid n | ファイルのグループ ID 番号が n ならば真。 | ||||||||||||||
-group gname | ファイルの属するグループが gname ならば真 (ID 番号も指定可)。 | ||||||||||||||
-ilname pattern | -lname と同じだが、大文字小文字を区別しない。 | ||||||||||||||
-iname pattern | -name と同じだが、大文字小文字を区別しない。例えばパターン fo* も F?? も Foo, FOO, foo, fOo などにマッチする。 | ||||||||||||||
-inum n | ファイルの i-ノード番号が n ならば真。 | ||||||||||||||
-ipath pattern | -path と同じだが、大文字小文字を区別しない。 | ||||||||||||||
-iregex pattern | -regex と同じだが、大文字小文字を区別しない。 | ||||||||||||||
-links n | ファイルのリンク数が n ならば真。 | ||||||||||||||
-lname pattern | ファイルがシンボリックリンクであり、 そのリンク先がシェルのパターン pattern にマッチすれば真。 メタキャラクタは / や . を例外扱いしない。 | ||||||||||||||
-mmin n | ファイルのデータが最後に修正されたのが n 分前なら真。 | ||||||||||||||
-mtime n | ファイルのデータが最後に修正されたのが n*24 時間前なら真。 | ||||||||||||||
-name pattern | ディレクトリの部分を取り去ったファイル名が シェルのパターン pattern にマッチすれば真。 メタキャラクタ (*、? および []) は、 ファイル名の先頭の . にはマッチしない。 あるディレクトリおよびそれ以下のファイルを無視するには -prune を用いる。 -path の説明にある例を参照のこと。 | ||||||||||||||
-newer file | ファイル file 以降に修正されたファイルに対して真を返す。 -follow がコマンドライン上で -newer より前に指定されている場合に限り、 -newer は -follow による影響を受ける。 | ||||||||||||||
-nouser | ファイルのユーザー ID 番号に対応するユーザーがいなければ真。 | ||||||||||||||
-nogroup | ファイルのグループ ID 番号に対応するグループがなければ真。 | ||||||||||||||
-path pattern | ファイル名がシェルのパターン pattern にマッチすれば真。 メタキャラクタは / や . を例外扱いしない。従って例えば find . -path ./sr*sc は ./src/misc というディレクトリを (実際に存在していれば) 表示する。 ディレクトリツリー全体を無視するためには、 一つ一つのファイルをチェックするより -prune を用いる方が良い。 たとえば src/emacs ディレクトリおよびそれ以下のファイルをすべて無視し、 他のファイルを表示したいような場合には、以下のようにする。 find . -path ./src/emacs -prune -o -print | ||||||||||||||
-perm mode | ファイルの許可属性が mode (8 進または文字による指定) とまったく同じであったら真。 文字の場合は許可属性 0 からの差分を指定しているものとみなされる。 | ||||||||||||||
-perm -mode | mode で指定されている許可属性ビットのすべてが ファイルでも立っていたら真。 | ||||||||||||||
-perm +mode | mode で指定されている許可属性ビットが ファイルでどれか一つでも立っていたら真。 | ||||||||||||||
-regex pattern | ファイル名が正規表現 pattern にマッチすれば真。 このマッチは (すべてのパスを含む) ファイル名全体に対してでなければならない。 例えば ./fubar3 というファイルにマッチさせるには、 正規表現 .*bar. や .*b.*3 が使えるが、 b.*r3 はマッチしない。 | ||||||||||||||
-size n[bckw] | ファイルが n 分の領域を使用していたら真。 デフォルトでは n の単位は 512 バイトのブロックとなる (n の後に b が続いた場合も同様)。 後に続く文字が c ならば単位はバイト、 k ならばキロバイト、 w ならば 2 バイトのワード。 サイズには間接ブロック (indirect block) の分は含まれない。 しかし穴空きファイル (sparse file) における、 実際には割り当てられていないブロックの分は含まれる。 | ||||||||||||||
-true | 常に真。 | ||||||||||||||
-type c |
c で表されるタイプのファイルならば真。 c としては以下がある:
| ||||||||||||||
-uid n | ファイル所有者のユーザー ID の数値が n ならば真。 | ||||||||||||||
-used n | ファイルが最後にアクセスされたときと、 属性が最後に変更されたときの差が n 日であれば真。 | ||||||||||||||
-user uname | ファイルの所有者がユーザー uname ならば真 (ID の数値も指定可能)。 | ||||||||||||||
-xtype c | ファイルがシンボリックリンク以外の場合は -type と同じ。 シンボリックリンクに対しては以下のように判断される。 この判別式の前に -follow が指定されていなかった場合は、 リンク先のファイルのタイプが c ならば真。 -follow が指定されていた場合は c が l ならば真。 つまりシンボリックリンクに対して、 -xtype は -type がチェックしない側をチェックする。 | ||||||||||||||
アクション
-exec command ; | command を実行する。コマンドの戻り値が 0 ならば真。 find のコマンドラインで指定されたこれ以降の引き数は、 ; を含む引き数にいたるまで、 すべて command の引き数とみなされる。 文字列 {} は現在処理しているファイル名に置き換えられる。 これは command 引き数のどこにあってもよく、 単独で置かれていなくてもよい (単独で置かれていなければならないような find もある)。 これらの文字はシェルによって展開されないよう、 \ によってエスケープするか 引用符で囲む必要がある。 コマンドは find を実行したディレクトリから実行される。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-fls file | 真を返す。 -ls と同じ出力を -fprint のように file に出力する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-fprint file | 真を返す。フルパスのファイル名をファイル file file に出力する。 find の実行時に file が存在しない場合は新たに作成される。 すでに存在する場合は元の中身は捨てられる。 /dev/stdout および /dev/stderr というファイル名は特別に扱われ、 それぞれ標準出力と標準エラー出力に結果が渡される。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-fprint0 file | 真を返す。 -print0 と同じ出力を -fprint のように file に出力する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-fprintf file format | 真を返す。 -printf と同じ出力を -fprint のように file に出力する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ok command ; | -exec と似ているがまずユーザーに問い合わせを行い、 標準入力から回答を受け取る。 結果が y または Y で始まらない場合はコマンド実行は行なわず、 偽を返す。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
真を返す。ファイル名をフルパスで標準出力に表示し、 各ファイル名に改行文字を付加する。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-print0 | 真を返す。ファイル名をフルパスで標準出力に表示し、 各ファイル名にヌル文字を付加する。 このオプションを用いれば、 find の出力を処理するプログラムにおいて 改行文字を含んだファイル名を正しく解釈できるようになる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-printf format |
真を返す。 format を標準出力に表示する。 \ はエスケープ文字、
% は書式指定文字として解釈される。
フィールドの幅と精度は C 言語の printf 関数のように指定できる。
-print と異なり、 -printf は文字列の最後に改行文字を付加しない。
エスケープ文字と書式指定子は以下の通り:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-prune | 同時に -depth が指定されていない場合は常に真。ディレクトリを降りない。 -depth が指定されている場合は偽を返し、何もしない。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ls | 真を返す。現在のファイルを ls -dils 形式で標準出力にリストする。 ブロックカウントは 1K 単位で行われる。 ただし環境変数 POSIXLY_CORRECT が設定されている場合は、 512 バイト単位のブロックが用いられる。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
演算子
優先順位の順にリストしてある。
( expr ) | かっこの内部が先に評価される。 |
! expr | expr が偽の場合真となる。 |
-not expr | ! expr と同じ。 |
expr1 expr2 | And (implied); expr1 が偽の場合は expr2 は評価されない。 |
expr1 -a expr2 | expr1 expr2 と同じ。 |
expr1 -and expr2 | expr1 expr2 と同じ。 |
expr1 -o expr2 | Or; expr1 が真の場合には expr2 は評価されない。 |
expr1 -or expr2 | expr1 -o expr2 と同じ。 |
expr1 , expr2 | List; 常に expr1 と expr2 の両方が評価される。 expr1 の値は捨てられ、全体の値は expr2 と等しくなる。 |
関連項目
locate(1L), locatedb(5L), updatedb(1L), xargs(1L) Finding Files (on-line in Info, or printed)