COMMAND REFERENCE / 日本語訳
find(1)
FreeBSD / ports 15.quarterlySECTION 1英語の原文 ↗
版情報
- バリエーション
- 15.1-release-and-ports
- 原文形式
- html
- 原文 SHA-256
609f6787f2c5e99374b3f5a6ff10edf49cd315b01ce6a06b7350c983f966e915- 翻訳
- LLM による日本語訳
find -- ファイル階層をたどる
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
find ユーティリティは、指定された各 path のディレクトリツリーを再帰的にたどり、ツリー内の各ファイルに対して expression(以下に示す「基本式」と「オペランド」からなる式)を評価します。
オプションは次のとおりです。
- -E
-regex および -iregex 基本式に続く正規表現を、基本正規表現(BRE)ではなく拡張(現代的な)正規表現として解釈します。両形式の詳細は re_format(7) マニュアルページに記載されています。
- -H
コマンドラインで指定された各シンボリックリンクについて、リンク自体ではなく、リンクが参照するファイルの情報と種類(stat(2) を参照)を使用します。参照先のファイルが存在しない場合は、リンク自体の情報と種類を使用します。コマンドラインで指定されていないシンボリックリンクについては、すべてリンク自体の情報を使用します。
- -L
各シンボリックリンクについて、リンク自体ではなく、リンクが参照するファイルの情報と種類(stat(2) を参照)を使用します。参照先のファイルが存在しない場合は、リンク自体の情報と種類を使用します。
このオプションは、非推奨の -follow 基本式と同等です。
- -P
各シンボリックリンクについて、リンク自体のファイル情報と種類(stat(2) を参照)を使用します。これが既定の動作です。
- -X
find を xargs(1) と組み合わせて安全に使用できるようにします。ファイル名に xargs(1) が区切りとして扱う文字が含まれる場合は、標準エラー出力に診断メッセージを表示し、そのファイルをスキップします。区切り文字には、単一引用符(')、二重引用符(")、バックスラッシュ(\)、空白、タブ、改行が含まれます。
ただし、有効な代替手段として、-print0 基本式と「xargs -0」の組み合わせも検討できます。
- -d
find に深さ優先の走査を行わせます。
このオプションは、IEEE Std 1003.1-2001(「POSIX.1」)で規定された -depth 基本式に相当する、BSD 固有のオプションです。詳細は「基本式」の説明を参照してください。
- -f path
再帰的にたどるパスの一覧に path を追加します。path が、指定しなければ expression と解釈される文字、つまり「!」「(」「-」で始まる場合に便利です。
- -s
find にファイル階層を辞書順、つまり各ディレクトリ内でアルファベット順に走査させます。注意:「find
-s」と「find | sort」の結果は異なる場合があります。
たとえば「find -s」は、ディレクトリ「foo」とその内容すべてをディレクトリ「foo.」の前に配置します。一方「find | sort」は、ディレクトリ名「foo.」を「foo/bar」のような文字列より前に配置します。ASCII では「.」が「/」より前に位置するためです。C 以外のロケールでは、照合順序の違いによって結果がさらに異なる場合があります。
- -x
走査を開始したファイルとは異なるデバイス番号を持つディレクトリに、find が降りていかないようにします。
このオプションは、非推奨の -xdev 基本式と同等です。
数値引数を取るすべての基本式では、数値の前にプラス記号(「+」)またはマイナス記号(「-」)を付けられます。先頭のプラス記号は「n より大きい」、マイナス記号は「n より小さい」、どちらもない場合は「ちょうど n」を意味します。
- -Bmin n
ファイルの inode 作成時刻から find の起動時刻までの差を、端数を切り上げて分単位にした値が n 分であれば真になります。
- -Bnewer file
-newerBm と同じです。
- -Btime n[smhdw]
単位を指定しない場合は、ファイルの inode 作成時刻から find の起動時刻までの差を、端数を切り上げて 24 時間単位にした値が n であれば真になります。
単位を指定した場合は、ファイルの inode 作成時刻から find の起動時刻までの差が、指定した単位でちょうど n であれば真になります。使用できる時間単位については、-atime 基本式の説明を参照してください。
- -acl
ほかの基本式と組み合わせて、拡張 ACL を持つファイルを探すために使用できます。詳細は acl(3) を参照してください。
- -amin [-|+]n
ファイルの最終アクセス時刻から find の起動時刻までの差を、端数を切り上げて分単位にした値が、n より大きい(+n)、n より小さい(-n)、またはちょうど n 分であれば真になります。
- -anewer file
-neweram と同じです。
- -atime n[smhdw]
単位を指定しない場合は、ファイルの最終アクセス時刻から find の起動時刻までの差を、端数を切り上げて 24 時間単位にした値が n であれば真になります。
単位を指定した場合は、ファイルの最終アクセス時刻から find の起動時刻までの差が、指定した単位でちょうど n であれば真になります。使用できる時間単位は次のとおりです。
- s
秒
- m
分(60 秒)
- h
時間(60 分)
- d
日(24 時間)
- w
週(7 日)
「-atime -1h30m」のように、1 つの -atime 引数で任意の数の単位を組み合わせられます。単位の指定が役立つのは、おそらく + または - 修飾子と組み合わせる場合に限られます。
- -cmin [-|+]n
ファイルの状態情報を最後に変更した時刻から find の起動時刻までの差を、端数を切り上げて分単位にした値が、n より大きい(+n)、n より小さい(-n)、またはちょうど n 分であれば真になります。
- -cnewer file
-newercm と同じです。
- -ctime n[smhdw]
単位を指定しない場合は、ファイルの状態情報を最後に変更した時刻から find の起動時刻までの差を、端数を切り上げて 24 時間単位にした値が n であれば真になります。
単位を指定した場合は、ファイルの状態情報を最後に変更した時刻から find の起動時刻までの差が、指定した単位でちょうど n であれば真になります。使用できる時間単位については、-atime 基本式の説明を参照してください。
- -d
depth の、移植性のない BSD 固有の形式です。GNU find は FreeBSD find の動作を誤って模倣し、これを基本式として実装しています。
- -delete
見つかったファイルやディレクトリを削除します。常に真を返します。find がツリーを再帰的にたどる際、その時点の作業ディレクトリから実行します。安全のため、「.」からの相対パスに「/」を含む名前の削除は試みません。このオプションを指定すると、深さ優先の走査が暗黙的に有効になります。-delete 基本式は、空でないディレクトリの削除に失敗します。このオプションとシンボリックリンクの追跡は併用できません。
警告(WARNING):-delete 基本式は、評価されると直ちに現在のパスの削除を試みます。式の中での位置に注意してください。原則として、ほとんどの場合は最後に置くべきです。不安がある場合は、まず -delete を -print に置き換えて実行してみてください。評価順序の詳細は、後述の「演算子」を参照してください。
- -depth
常に真になります。移植性のない -d オプションと同じです。find に深さ優先の走査を行わせます。つまり、ディレクトリを後順で訪れ、ディレクトリ自体より先にその中のすべての項目を処理します。既定では、find はディレクトリを前順、つまりその内容より先に訪れます。既定の動作は幅優先の走査ではない(not)ことに注意してください。
-depth 基本式は、通常と異なるアクセス権限を持つディレクトリ内のファイルを、find と cpio(1) を組み合わせて処理する場合に便利です。ディレクトリにファイルを配置している間は書き込み権限がある状態を確保し、最後にディレクトリの権限を設定できます。
- -depth n
走査の開始点からの相対的なファイルの深さが n であれば真になります。
- -empty
現在のファイルまたはディレクトリが空であれば真になります。
- -exec utility [argument ...] ;
utility という名前のプログラムが終了ステータス 0 を返せば真になります。プログラムには任意の arguments を渡せます。この式はセミコロン(「;」)で終える必要があります。シェルから find を呼び出す場合、シェルがセミコロンを制御演算子として扱わないように、引用が必要になることがあります。プログラム名または引数のどこかに文字列「{}」があれば、現在のファイルのパス名に置き換えます。Utility は、find を実行したディレクトリから実行されます。Utility と arguments に対して、シェルのパターンや構文による追加の展開は行いません。
- -exec utility [argument ...] {} +
-exec と同じですが、utility の呼び出しごとに「{}」を可能な限り多くのパス名で置き換えます。この動作は xargs(1) に似ています。この基本式は常に真を返します。utility の呼び出しが 1 回でも 0 以外の終了ステータスを返すと、find も 0 以外の終了ステータスを返します。
- -execdir utility [argument ...] ;
-execdir 基本式は、現在のファイルがあるディレクトリから utility を実行する点を除き、-exec 基本式と同じです。文字列「{}」に代入されるファイル名には、ディレクトリ部分を付けません。
- -execdir utility [argument ...] {} +
-execdir と同じですが、utility の呼び出しごとに「{}」を可能な限り多くのパス名で置き換えます。この動作は xargs(1) に似ています。この基本式は常に真を返します。utility の呼び出しが 1 回でも 0 以外の終了ステータスを返すと、find も 0 以外の終了ステータスを返します。
- -executable
現在のユーザーが実行できるファイルに一致します。このテストは access(2) システムコールを使用するため、UID マッピング(または root-squashing)を行う NFS サーバーでは誤った判定をする場合があります。これは GNU find の拡張です。
- -flags [-|+]flags,notflags
フラグはシンボル名で指定します(chflags(1) を参照)。「no」接頭辞があるもの(「nodump」を除く)を notflags と呼びます。flags に含まれるフラグは設定されていることを、notflags に含まれるフラグは設定されていないことを調べます。設定されているモードビットしか指定できない -perm とは異なることに注意してください。
フラグの前にダッシュ(「-」)を付けた場合は、ファイルのフラグビットで、少なくとも flags のすべてのビットが設定され、notflags のビットがどれも設定されていなければ真になります。プラス(「+」)を付けた場合は、flags のいずれかのビットが設定されているか、notflags のいずれかのビットが設定されていなければ真になります。それ以外の場合は、flags のビットがファイルのフラグビットに完全に一致し、flags のビットが notflags のビットとまったく重ならなければ真になります。
- -fprint filename
この基本式は常に真になります。filename を作成するか、すでに存在する場合はその内容を切り詰めて空にします。ファイルは起動時に作成します。現在のファイルのパス名に改行を付けて、このファイルに書き込みます。一致するファイルがなければ、出力ファイルは空になります。
- -fprint0 filename
この基本式は常に真になります。filename を作成するか、すでに存在する場合はその内容を切り詰めて空にします。ファイルは起動時に作成します。現在のファイルのパス名に ASCII NUL 文字(文字コード 0)を付けて、このファイルに書き込みます。一致するファイルがなければ、出力ファイルは空になります。
- -fstype type
ファイルが種類 type のファイルシステムに含まれていれば真になります。システムで利用できるファイルシステムの種類は、lsvfs(1) コマンドで調べられます。また、「local」と「rdonly」という 2 つの疑似的な種類があります。前者は find を実行しているシステムに物理的にマウントされたすべてのファイルシステムに、後者は読み取り専用でマウントされたすべてのファイルシステムに一致します。
- -gid gname
GNU find との互換性のために用意されており、-group gname と同じです。GNU find は gname を数値に制限しますが、find にはその制限がありません。
- -group gname
ファイルがグループ gname に属していれば真になります。gname が数値で、その名前のグループが存在しなければ、gname をグループ ID として扱います。
- -ignore_readdir_race
ディレクトリから名前を読み取った後にファイルやディレクトリが削除されたために発生するエラーを無視します。このオプションは、検索の開始点で発生するエラーには影響しません。
- -ilname pattern
-lname と同じですが、大文字と小文字を区別せずに照合します。これは GNU find の拡張です。
- -iname pattern
-name と同じですが、大文字と小文字を区別せずに照合します。
- -inum n
ファイルの inode 番号が n であれば真になります。
- -ipath pattern
-path と同じですが、大文字と小文字を区別せずに照合します。
- -iregex pattern
-regex と同じですが、大文字と小文字を区別せずに照合します。
- -iwholename pattern
GNU find との互換性のために用意されており、-ipath と同じです。
- -links n
ファイルのリンク数が n であれば真になります。
- -lname pattern
-name と同じですが、ファイル名の代わりにシンボリックリンクの内容を照合します。シンボリックリンクをたどる設定の場合は、壊れたシンボリックリンクにしか一致しないことに注意してください。これは GNU find の拡張です。
- -ls
この基本式は常に真になります。現在のファイルについて、inode 番号、512 バイトブロック単位のサイズ、ファイルのアクセス権限、ハードリンク数、所有者、グループ、バイト単位のサイズ、最終更新時刻、パス名を標準出力に書き出します。ブロック特殊ファイルまたはキャラクター特殊ファイルの場合は、バイト単位のサイズの代わりにデバイス番号を表示します。シンボリックリンクの場合は、「->」に続けてリンク先ファイルのパス名を表示します。形式は「ls -dils」の出力と同じです。
- -maxdepth n
常に真になります。コマンドライン引数から下へ、最大 n 階層までディレクトリをたどります。-maxdepth 基本式を指定すると、通常の評価順序ではその基本式が評価されない場合でも、式全体に適用されます。「-maxdepth 0」は検索全体をコマンドライン引数だけに限定します。
- -mindepth n
常に真になります。深さが n 未満の階層では、テストもアクションも適用しません。-mindepth 基本式を指定すると、通常の評価順序ではその基本式が評価されない場合でも、式全体に適用されます。「-mindepth 1」は、コマンドライン引数を除くすべてを処理します。
- -mmin [-|+]n
ファイルの最終更新時刻から find の起動時刻までの差を、端数を切り上げて分単位にした値が、n より大きい(+n)、n より小さい(-n)、またはちょうど n 分であれば真になります。
- -mnewer file
-newer と同じです。
- -mount
GNU find との互換性のために用意されており、-xdev と同じです。
- -mtime n[smhdw]
単位を指定しない場合は、ファイルの最終更新時刻から find の起動時刻までの差を、端数を切り上げて 24 時間単位にした値が n であれば真になります。
単位を指定した場合は、ファイルの最終更新時刻から find の起動時刻までの差が、指定した単位でちょうど n であれば真になります。使用できる時間単位については、-atime 基本式の説明を参照してください。
- -name pattern
調べているパス名の最後の構成要素が pattern に一致すれば真になります。pattern の一部には、シェルのパターン照合用の特殊文字(「[」「]」「*」「?」)を使用できます。これらの文字そのものと照合したい場合は、バックスラッシュ(「\」)でエスケープします。
- -newer file
現在のファイルの最終更新時刻が file より新しければ真になります。
- -newerXY file
現在のファイルの最終アクセス時刻(X=a)、inode 作成時刻(X=B)、状態変更時刻(X=c)、または更新時刻(X=m)が、file の最終アクセス時刻(Y=a)、inode 作成時刻(Y=B)、状態変更時刻(Y=c)、または更新時刻(Y=m)より新しければ真になります。また Y=t の場合、file はファイルではなく、ISO8601 または RFC822 で解釈できる形式の日時指定として扱います。-newermm は -newer と同等であることに注意してください。
- -nogroup
ファイルが不明なグループに属していれば真になります。
- -noignore_readdir_race
-ignore_readdir_race の効果を無効にします。これが既定の動作です。
- -noleaf
このオプションは GNU find との互換性のためのものです。GNU find では最適化を無効にしますが、その最適化は find には関係しないため無視します。
- -nouser
ファイルが不明なユーザーに属していれば真になります。
- -ok utility [argument ...] ;
-ok 基本式は、find が端末にメッセージを表示して応答を読み取り、utility の実行についてユーザーの確認を求める点を除き、-exec 基本式と同じです。応答が肯定(「POSIX」ロケールでは「y」)でなければ、コマンドは実行されず、-ok 式の値は偽になります。
- -okdir utility [argument ...] ;
-okdir 基本式は、-ok 基本式で説明したものと同じ相違点を除き、-execdir 基本式と同じです。
- -path pattern
調べているパス名が pattern に一致すれば真になります。pattern の一部には、シェルのパターン照合用の特殊文字(「[」「]」「*」「?」)を使用できます。これらの文字そのものと照合したい場合は、バックスラッシュ(「\」)でエスケープします。スラッシュ(「/」)は通常の文字として扱うため、明示的に照合する必要はありません。
- -perm [-|+|/]mode
mode はシンボル形式(chmod(1) を参照)または 8 進数で指定できます。mode がシンボル形式の場合、初期値を 0 とみなし、プロセスのファイル作成モードマスクに関係なく、mode に従って権限を設定または解除します。mode が 8 進数の場合、比較の対象はファイルのモードビットのうち 07777(S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO)だけです。mode の前にダッシュ(「-」)を付けた場合は、少なくとも mode のすべてのビットがファイルのモードビットに設定されていれば真になります。mode の前にプラス(「+」)を付けた場合は、mode のいずれかのビットが設定されていれば真になります。GNU find との互換性のため、スラッシュ(「/」)もプラスと同じ意味で受け付けます。それ以外の場合は、mode のビットがファイルのモードビットに完全に一致すれば真になります。シンボル形式のモードの先頭文字にはダッシュ(「-」)を使用できないことに注意してください。
この基本式は常に真になります。現在のファイルのパス名を標準出力に表示します。-exec、-ls、-print0、-ok のどれも指定されていない場合、指定した式は実質的に ( given expression ) -print に置き換えられます。
- -print0
この基本式は常に真になります。現在のファイルのパス名に ASCII NUL 文字(文字コード 0)を付けて標準出力に表示します。
- -printf fmt
この基本式は常に真になります。「PRINTF の書式」節で説明するエスケープシーケンスを解釈して、ファイルの情報を表示します(原文のこの箇所の表記は「and」「%」です)。-print とは異なり、-printf は改行を自動的に追加しません。
- -prune
この基本式は常に真になります。find が現在のファイルの下へ降りていかないようにします。-d オプションが指定されている場合、-prune 基本式は効果を持たないことに注意してください。
- -quit
find を直ちに終了させます。
- -readable
現在のユーザーが読み取れるファイルに一致します。このテストは access(2) システムコールを使用するため、UID マッピング(または root-squashing)を行う NFS サーバーでは誤った判定をする場合があります。これは GNU find の拡張です。
- -regex pattern
ファイルのパス全体が正規表現 pattern に一致すれば真になります。「./foo/xyzzy」という名前のファイルに一致させるには、正規表現「.*/[xyz]*」または「.*/foo/.*」を使用できますが、「xyzzy」や「/foo/」では一致しません。
- -samefile name
ファイルが name へのハードリンクであれば真になります。コマンドオプション -L が指定されている場合は、ファイルが name を指すシンボリックリンクであっても真になります。
- -size n[ckMGTP]
ファイルのサイズを 512 バイトブロック単位で切り上げた値が n であれば真になります。n の後ろに c がある場合は、ファイルのサイズが n バイト(文字)であれば真になります。同様に、n の後ろに倍率を示す文字がある場合は、n を次のように換算してファイルのサイズと比較します。
- k
キロバイト(1024 バイト)
- M
メガバイト(1024 キロバイト)
- G
ギガバイト(1024 メガバイト)
- T
テラバイト(1024 ギガバイト)
- P
ペタバイト(1024 テラバイト)
- -sparse
現在のファイルが疎なファイル、つまりバイト単位のサイズから予想されるよりも少ないブロックしか割り当てられていないファイルであれば真になります。ファイルシステムによって圧縮されたファイルにも一致する場合があります。
- -type t
ファイルが指定した種類であれば真になります。指定できるファイルの種類は次のとおりです。
- b
ブロック特殊ファイル
- c
キャラクター特殊ファイル
- d
ディレクトリ
- f
通常のファイル
- l
シンボリックリンク
- p
FIFO
- s
ソケット
- -uid uname
GNU find との互換性のために用意されており、-user uname と同じです。GNU find は uname を数値に制限しますが、find にはその制限がありません。
- -user uname
ファイルがユーザー uname に属していれば真になります。uname が数値で、その名前のユーザーが存在しなければ、uname をユーザー ID として扱います。
- -wholename pattern
GNU find との互換性のために用意されており、-path と同じです。
- -writable
現在のユーザーが書き込めるファイルに一致します。このテストは access(2) システムコールを使用するため、UID マッピング(または root-squashing)を行う NFS サーバーでは誤った判定をする場合があります。これは GNU find の拡張です。
- -xattr
サポートされているいずれかの名前空間に拡張属性が設定されているファイルに一致します。
- -xattrname xattr
指定した拡張属性 xattr が設定されているファイルに一致します。既定では、サポートされているすべての名前空間を検索しますが、xattr に「user:」または「system:」を前置すると、名前空間を絞り込めます。
名前付き属性はサポートされず、setextattr(8) などで設定する拡張属性だけが対象であることに注意してください。
基本式は次の演算子で組み合わせられます。演算子は、優先順位の高いものから順に並べています。
- ( expression )
括弧内の式が真であれば真になります。
- ! expression
-not expression
単項 NOT 演算子です。式が偽であれば真になります。
- -false
常に偽になります。
- -true
常に真になります。
expression -and expression
expression expression
-and 演算子は論理積(AND)演算子です。2 つの式を並べると暗黙的に適用されるため、明示する必要はありません。両方の式が真であれば、全体が真になります。最初の式が偽の場合、2 番目の式は評価されません。
expression -or expression
-or 演算子は論理和(OR)演算子です。最初または 2 番目の式のどちらかが真であれば、全体が真になります。最初の式が真の場合、2 番目の式は評価されません。
すべてのオペランドと基本式は、それぞれ独立した find の引数でなければなりません。基本式自体が引数を取る場合、その各引数もそれぞれ独立した find の引数として渡す必要があります。
PRINTF の書式
Section titled “PRINTF の書式”次の「\」エスケープを認識します。
\a ベル文字を書き出します。
\b バックスペース文字を書き出します。
\c 文字は書き出さず、一致するたびに文字列を終了し、それまでの出力をフラッシュします。
\f 改ページ文字を書き出します。
\n 改行文字を書き出します。
\r 復帰文字を書き出します。
\t タブ文字を書き出します。
\v 垂直タブ文字を書き出します。
\' 単一引用符を書き出します。
\\ バックスラッシュ文字を書き出します。
\num 1 桁、2 桁、または 3 桁の 8 進数 num を値とする 1 バイトを書き出します。複数の \num シーケンスを使って、マルチバイト文字を構成できます。
各書式指定はパーセント文字(「%」)で始まります。その後には、次の要素をこの順序で指定します。
次のフラグを 0 個以上指定します。
- #
「#」文字は、ほとんどすべての書式で効果を持ちません。まだ実装されていません。
- -
マイナス記号「-」は、指定したフィールド内で出力を左寄せ(left adjustment)にする指定です。まだ実装されていません。
フィールド幅:
フィールド幅(field width)を示す数字列を任意で指定します。出力文字列のバイト数がフィールド幅より少なければ、フィールド幅を満たすように左側を空白で埋めます。左寄せの指定がある場合は右側を埋めます。先頭の 0 はフラグですが、数字列の途中にある 0 はフィールド幅の一部であることに注意してください。まだ実装されていません。
精度:
ピリオド「.」を任意で指定し、その後ろに精度(precision)を示す数字列を任意で指定します。精度は、文字列から出力する最大バイト数を指定します。数字列がなければ、精度は 0 として扱います。まだ実装されていません。
書式:
表示する情報を示す、以下の 1 文字または 2 文字です。
p ファイルへのパス。
f ディレクトリ部分を除いたファイル名。
h 開始点からの相対パス。何らかの理由で空になる場合は「.」。
P 未実装 -- コマンドライン引数付きのファイル。
H 未実装 -- コマンドライン引数。
g 人が読める形式の gid。
G 数値形式の gid。
h 人が読める形式の uid。
U 数値形式の uid。
m 8 進数によるファイルのアクセス権限モード。
M ls(1) の標準形式によるファイルモード。
k KiB(1024 バイト単位)によるファイルサイズ。
b ブロック単位によるファイルサイズ。基盤となるストレージのブロックサイズが異なっていても、常に 512 バイト単位です。
s バイト単位によるファイルサイズ。
S ファイルの疎度。ファイルが占有するブロック数に 512 を掛け、ファイルサイズで割った値です。
d ツリー内の深さ。
D ファイルのデバイス番号。
F 未実装 -- ファイルが存在するファイルシステムの種類。
l シンボリックリンクの参照先。
i ファイルの inode。
n ハードリンク数。
y ファイルの種類を表す 1 文字。
Y ファイルの種類を表す 1 文字。シンボリックリンクの場合は、代わりにリンク先の情報を表示します。リンクが循環している場合は「L」、参照先が存在しない場合は「N」、参照先の種類を調べる際にそれ以外のエラーが発生した場合は「?」を表示します。
a ファイルのアクセス時刻。
A strftime 形式によるファイルのアクセス時刻。追加の引数を取ります。
B strftime 形式によるファイルの作成時刻(birth time)。追加の引数を取ります。
c ファイルの作成時刻。
C strftime 形式によるファイルの作成時刻。追加の引数を取ります。
t ファイルの更新時刻。
T strftime 形式によるファイルの更新時刻。追加の引数を取ります。
ここに記載していない書式はサポートされません。ただし、エラーの内容は書式によって異なります。
環境変数 LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_TIME は、environ(7)(原文の行分割表記:envi-ron(7)) で説明されているとおり、find ユーティリティの実行に影響します。
以下の例は、シェルに渡す形式で示しています。
find / \! -name "*.c" -print
名前が .c で終わらないすべてのファイルの一覧を表示します。
find / -newer ttt -user wnj -print
ユーザー「wnj」が所有し、ファイル ttt より新しいすべてのファイルの一覧を表示します。
find / \! \( -newer ttt -user wnj \) -print
「ttt より新しく、かつ wnj が所有する」という両条件を同時には満たさない、すべてのファイルの一覧を表示します。
find / \( -newer ttt -or -user wnj \) -print
「wnj」が所有するか、ttt より新しいか、いずれかの条件を満たすすべてのファイルの一覧を表示します。
find / -newerct '1 minute ago' -print
inode の状態変更時刻が現在時刻の 1 分前より新しい、すべてのファイルの一覧を表示します。
find / -type f -exec echo {} \;
echo(1) コマンドで、すべてのファイルの一覧を表示します。
find -L /usr/ports/packages -type l -exec rm -- {} +
/usr/ports/packages 内の壊れたシンボリックリンクをすべて削除します。
find /usr/src -name CVS -prune -o -depth +6 -print
作業ディレクトリ /usr/src 内で、深さが 7 階層以上のファイルとディレクトリを探します。
find /usr/src -name CVS -prune -o -mindepth 7 -print
深さが 7 未満の階層では -prune が評価されないため、直前の例とは同等ではありません。
-follow 基本式は非推奨です。代わりに -L オプションを使用してください。詳細は後述の「準拠する標準」節を参照してください。
chflags(1), chmod(1), locate(1), lsvfs(1), whereis(1), which(1), xargs(1),
extattr(2), stat(2), acl(3), fts(3), getgrent(3), getpwent(3), strmode(3),
ascii(7), re_format(7), symlink(7), setextattr(8)
準拠する標準
Section titled “準拠する標準”find ユーティリティの構文は、IEEE Std 1003.1-2001(「POSIX.1」)で規定された構文の上位集合です。
-H と -L を除くすべての 1 文字オプション、ならびに -amin、-anewer、-cmin、-cnewer、-delete、-empty、-fstype、-iname、-inum、-iregex、-ls、-maxdepth、-mindepth、-mmin、-not、-path、-print0、-regex、-sparse、および作成時刻に関係するすべての -B* 基本式は、IEEE Std 1003.1-2001(「POSIX.1」)に対する拡張です。
従来、-d、-L、-x オプションは、それぞれ -depth、-follow、-xdev 基本式として実装されていました。これらの基本式は常に真になりました。実際には走査の開始前に効果を持つ大域変数だったため、正しい式でも予想外の結果になる場合がありました。たとえば -print -o -depth という式が該当します。-print は常に真になるため、通常の評価順序なら -depth は一度も評価されないはずですが、実際にはそうなりません。
-or 演算子は -o として、-and 演算子は -a として実装されていました。
従来の -exec および -ok 基本式の実装では、プログラム名やプログラムの引数に含まれる文字列「{}」の前後に空白以外の文字がある場合、その文字列を置き換えませんでした。この版では、プログラム名や引数のどこにあっても置き換えます。
-E オプションは、grep(1) および sed(1) の同等のオプションを参考にしたものです。
-perm 基本式は GNU find と互換性を持たせるため、IEEE Std 1003.1-2001(「POSIX.1」)に対する拡張として、引数の先頭のスラッシュ(「/」)をプラス(「+」)と同じ意味で受け付けます。
単純な find コマンドが Version 1 AT&T UNIX に登場し、Version 3 AT&T UNIX で削除されました。その後 Version 5 AT&T UNIX 向けに書き直され、さらに Programmer's Workbench(PWB)向けに機能が拡張されました。これらの変更は、後に Version 7 AT&T UNIX に取り込まれました。
find が使用する特殊文字は、多くのシェルプログラムでも特殊文字です。特に「*」「[」「]」「?」「(」「)」「!」「\」「;」は、シェルによる解釈を避けるためにエスケープが必要になることがあります。
オプションとファイル名、またはファイル名と expression を分ける区切りがないため、-xdev や ! という名前のファイルの指定は困難です。これらの問題には、-f オプションと getopt(3) の「--」構文で対処できます。
-delete 基本式は、ファイルシステムツリーの走査方法を変更するほかのオプションとうまく組み合わせられません。
-mindepth と -maxdepth 基本式は、前述のとおり実際には大域的なオプションです。おそらく、オプションであることが見た目にも分かるオプションに置き換えるべきでしょう。
FreeBSD ports 15.quarterly 2026 年 2 月 14 日 FIND(1)