FIND(1) FreeBSD 一般コマンドマニュアル FIND(1)
名称
find − ディレクトリツリーを再帰的に下ってファイルを捜す |
書式
find [−H | −L | −P] [−EXdsx] [−f pathname] [pathname ...] expression |
解説 |
find ユーティリティは、 pathname に対してディレクトリツリーを再帰的に下っ て、ツリー上の各ファイルについて expression (後に示す ‘‘プライマリ’’ と ‘‘演算子’’ から構成されます) で指定された処理を実行します。 オプションとしては以下のものがあります: |
−E
-regex および -iregex のオプションの後の正規表現を、基本正規表現 (BRE) の代りに拡張 (最近の) 正規表現として解釈します。 re_format(7) マニュアルページは、両方のフォーマットを完全に解説し ています。 −H −L このオプションは、もはや推奨されない -follow プライマリと等価で す。 −P −X 効果的な代案として、 −print0 プライマリを ‘‘xargs −0’’ と共に使用 することを検討すると良いかもしれません。 −d このオプションは IEEE Std 1003.1-2001 (‘‘POSIX.1’’) の -depth プ ライマリと等価です。 −d は、 find を cpio(1) とともに使用する場 合、 cpio(1) が通常でないパーミッションを持つディレクトリに存在す るファイルを処理する際に有益です。このオプションにより、ファイル をディレクトリに置いている間は書き込み許可が保持され、その後、最 後にディレクトリのパーミッションが設定されることが保証されます。 −f −s −x このオプションは、廃止された -xdev プライマリと同等のものです。 プライマリ |
-acl
他のオプションと組み合わせて、拡張 ACL 属性を持つファイルの場所を 示します。これ以上の情報については acl(3) を参照してください。 -amin n -anewer file -atime n[smhdw] 単位を指定する場合、最後にファイルがアクセスされた時刻と、 find を起動した時刻との差が正確に n 単位であれば、真とします。可能な時 間の単位は次の通りです: s いくつもの単位を組み合わせて 1 個の -atime 引数に使用可能であり、 例えば ‘‘-atime -1h30m’’ とできます。単位指定は、 + または - の修 正子と組み合わせた場合のみ、おそらく有用でしょう。 -cmin n -cnewer file -ctime n[smhdw] 単位を指定する場合、最後にファイルのステータスが変更された時刻 と、 find を起動した時刻との差が正確に n 単位であれば、真としま す。サポートされている時間の単位については、 -atime プライマリの 記述を参照してください。 -delete -depth -depth n -empty -exec utility [ -exec utility [ -execdir utility [ -flags [ フラグの前にダッシュ (‘‘-’’) が付く場合、このプライマリは、ファイ ルのフラグビットのうち少なくとも flags 中の全ビットが設定されてい て、 notflags 中のどのビットも設定されていない場合に真になりま す。フラグの前にプラス (‘‘+’’) が付く場合、このプライマリは、ファ イルのフラグビットのうち flags のいずれかのビットが設定されている か、 notflags のいずれかのビットが設定されていない場合に真になり ます。どちらでもない場合、このプライマリは、 flags のビットがファ イルのフラグビットに完全に適合し、 flags のいずれもが notflags に 適合しない場合に真になります。 -fstype type sysctl vfs さらに、2 つの 擬似タイプ ‘‘local’’ と ‘‘rdonly’’ があります。前 者は、 find を実行しているシステム上に物理的にマウントされている ファイルシステムです。後者は、読み取り専用でマウントされている ファイルシステムです。 -group gname -iname pattern -inum n -ipath pattern -iregex pattern -links n -ls -maxdepth n -mindepth n -mmin n -mnewer file -mtime n[smhdw] 単位を指定する場合、最後にファイルが修正された時刻と、 find を起 動した時刻との差が正確に n 単位であれば、真とします。サポートされ ている時間の単位については、 -atime プライマリの記述を参照してく ださい。 -name pattern -newer file -newerXY file -nogroup -nouser -ok utility [ -okdir utility [ -path pattern -perm [ -print -print0 -prune -regex pattern -size n[c] -type t b -user uname なお、数字を引数にとるプライマリは、数字の前にプラス (‘‘+’’) およびマイナ ス (‘‘-’’) をつけることができます。それぞれ ‘‘n より大’’ および ‘‘n より 小’’ の意味になり、 ‘‘正確に n’’ という意味ではなくなります。 演算子 |
以下の演算子を使って、プライマリを組み合わせることができます。演算子は優 先度が下がる順番で示されています。 |
( expression )
もし、括弧内の expression が真なら、真になります。 ! expression expression -and expression expression -or expression 演算子とプライマリのすべては find の個別の引数として与える必要がありま す。プライマリ自身が引数を取る場合、その引数も find の個別の引数として与 える必要があります。 使用例 |
コマンドラインからのタイプ例です。 |
find / \! -name "*.c" -print
ファイル名の終わりが .c でない全ファイルを表示します。 find / -newer ttt -user wnj -print find / \! \( -newer ttt -user wnj \) -print find / \( -newer ttt -or -user wnj \) -print find / -newerct ’1 minute ago’ -print find / -type f -exec echo {} \; find -L /usr/ports/packages -type l -delete find /usr/src -name CVS -prune -o -depth +6 -print find /usr/src -name CVS -prune -o -mindepth 7 -print 互換性 |
-follow プライマリは廃止されました。かわりに −L オプションを使用して下さ い。詳しくは下記の 規格セクションを参照して下さい。 |
関連項目
chflags(1), chmod(1), cvs(1), locate(1), whereis(1), which(1), xargs(1), stat(2), acl(3), fts(3), getgrent(3), getpwent(3), strmode(3), re_format(7), symlink(7) |
規格
find ユーティリティの文法は IEEE Std 1003.1-2001 (‘‘POSIX.1’’) の仕様で決 められた文法のスーパセットです。 -H, -L を除く全 1 文字オプションと -iname, -inum, -print0, -delete, -ls, -regex のプライマリは IEEE Std 1003.1-2001 (‘‘POSIX.1’’) に対する拡張で す。 昔は −d, −L, −x のオプションはそれぞれ -depth, -follow, -xdev のプライマ リを用いて実装されていました。これらのプライマリは常に真に評価されていま した。これらのプライマリは探索が始まる前に効果を与える本当のグローバル変 数であったので、いくつかの合法的な expression が予期しない結果となりまし た。一例として -print -o -depth の expression があります。 -print が常に 真に評価されるため標準の評価の順番では -depth は決して評価されないはずで すが、そうではありませんでした。 演算子の -or は -o として実装されていました。演算子の -and は -a として実 装されていました。 昔の実装では -exec と -ok のプライマリでは、 utility 名やその引数中におい て、空白以外の文字が前後に続く ‘‘{}’’ を置き換えませんでした。このバー ジョンでは utility 名やその引数のどの場所に ‘‘{}’’ が現れても置き換えま す。 |
歴史
find コマンドは Version 1 AT&T UNIX ではじめて出現しました。 |
バグ
find によって使われる特殊文字は多くのシェルプログラムにとっても特殊文字で す。特に ‘‘*’’, ‘‘[’’, ‘‘]’’, ‘‘?’’, ‘‘(’’, ‘‘)’’, ‘‘!’’, ‘‘\’’, ‘‘;’’ は、シェルからエスケープされなくてはならないでしょう。 オプションとファイル名との間およびファイル名と expression との間を区切る デリミタが存在しませんので、 -xdev や ! を指定することは難しいです。この 問題に対処するには、 −f オプションを使うか、 getopt(3) で使われるオプショ ン指定の終了記号 ‘‘−−’’ を使用します。 -delete プライマリは、ファイルシステムツリーの探索オプションを変更する他 のオプションとは十分には連係しません。 (上で記したように) -mindepth と -maxdepth プライマリは実際にはグローバル オプションです。これらをオプションらしく見えるオプションと置き換えるべき でしょう。 FreeBSD 10.0 July 29, 2004 FreeBSD 10.0 |