FIND(1) — NEWS-OS Programmer’s Manual
名称
find − ファイルを見つける
形式
find pathname-list expression
find pattern
解説
上記の一行目の形式の場合、 find は、 pathname-list (すなわち、 1 つ以上のパス名) で指定された各パス名について、 ディレクトリ階層を下層に向かって再帰的に検索し、 以下に示す一次式で書かれた 論理式の条件と一致するファイルを探し出します。 下記の説明では、引数 n は 10 進整数として使用されています。 +n は n より大きな値、 −n は n より小さな値、そして、 n は n だけを意味します。
2 行目の形式は、 すべてのパス名のデータベースを迅速に検索し、 pattern に一致するものを探し出します。 普通、データベースは週に 1 度更新され、 これにはすべてのユーザから アクセス可能なすべてのファイルの パス名が収められています。 通常のシェルのメタキャラクタ (∗、?、 [、])は、 エスケープしておけば pattern 内で使用することができますが、 一致させるには、 その文字自身しかないという 文字(たとえば /)がない という点で、マッチングの規則が異なります。 特殊なケースとして、メタキャラクタを含まない単純な pattern は、 ∗pattern∗ であるかのように突き合わせされます。 メタキャラクタがある場合には、 暗黙的なメタキャラクタはありません。
−fstype type
タイプ type がファイルの属する filesystem に一致する場合は真。 ここで type は、 4.3 または nfs です。
−name filename
引数 filename が現在のファイル名に一致する場合は真。 エスケープすることによって、 通常のシェルの引数に用いる構文を使用することができます ([、?、∗ に注意してください)。
−perm onum
ファイルの許可フラグが 8 進数 onum に一致する場合は真 (chmod(1) 参照)。 onum の前にマイナス符号が付けられると、 より多くのフラグビット (017777、 stat(2) 参照) が意味を持ち、 (flags&onum)==onum のようにフラグが比較されます。
−prune 常に真になります。そのファイルのところで、 検索ツリーの枝を切り落とすという働きがあります。 つまり、現在のパス名がディレクトリの場合、 find はそのディレクトリから下へは降りていきません。
−type c ファイルのタイプが c である場合は真。ここで、 c は、 b、 c、 d、 f、 l、 s、 p のいずれかで、 それぞれブロック型のスペシャルファイル、 キャラクタ型のスペシャルファイル、 ディレクトリ、 普通のファイル、 シンボリックリンク、 ソケット、 名前つきパイプを 表します。
−links n ファイルに n 個のリンクがある場合は真。
−user uname
ファイルがユーザ uname (ログイン名または数値によるユーザ ID)に属している場合は真。
−nouser ファイルが /etc/passwd データベースに「ない」ユーザに属している場合は真。
−group gname
ファイルがグループ gname (グループ名または数値によるグループ ID)に属している場合は真。
−nogroup
ファイルが /etc/group データベースに「ない」グループに属している場合は真。
−size n ファイルの長さが n ブロック(512 バイト/ブロック)である場合は真。
−inum n ファイルの iノード番号が n の場合は真。
−atime n ファイルが過去 n 日間の間にアクセスされている場合は真。
−mtime n
ファイルが過去 n 日間の間に修正されている場合は真。
−exec command
実行されたコマンドが終了ステータスとして ゼロを返した場合は真。 コマンドの終わりには、 エスケープされたセミコロンがなければなりません。 コマンドの引数 { } は、現在のパス名で置き換えられます。
−ok command
生成されたコマンドが標準出力に書き込まれ、 次に標準入力が読み取られてユーザが y と応答した場合にだけ そのコマンドが実行されるという点を除けば、 −exec と同じです。
−print 常に真。 現在のパス名を表示させます。
−ls 常に真。 現在のパス名とそれに関連する統計を表示させます。 これは、(それぞれ) iノード番号、 K バイト(1024 バイト)単位のサイズ、 保護モード、ハードリンクの数、ユーザ、グループ、 バイト単位のサイズ、修正時刻を含みます。 ファイルがスペシャルファイルである場合には、 サイズのフィールドには代わりに メジャーおよびマイナーデバイス番号が表示されます。 ファイルがシンボリックリンクである場合には、 前に −> が付けられて リンク先のファイルのパス名が表示されます。 表示形式は、 ls -gilds と同じです (しかし、このための編集は、ls プログラムを 実行せずに内部的に行われることに注意してください)。
−newer file
現在のファイルが、引数 file よりも後に修正されている場合は真。
−cpio file 現在のファイルを cpio の形式で引数 file に書き込みます。
−xdev 常に真。 指定されたディレクトリを含むファイルシステムのみを検索します。
−mount -xdev と同じ。System V のオプションです。
−depth 常に真。 ディレクトリ内のすべてのエントリをディレクトリ自身より先に見て、 ディレクトリ階層構造を下がっていきます。これは書き込み許可のない ディレクトリにあるファイルをコピーするために、 cpio(1) と find を同時に使う時に役に立ちます。
−follow 常に真。 find がシンボリックリンクの先も検索するようにします。
一次式は、 次の演算子 (優先順位の高い順) を使用して 組み合わせることができます。
1) かっこで囲まれた一群の一次式と 演算子 (かっこはシェルにとって特別な意味を 持つので、エスケープしなければなりません)。
2) 一次式の否定 (! が単項の not 演算子です)。
3) 一次式の連結 (and 演算は 2 つの一次式を並べて記述することによって、 暗黙に指定されたことになります)。
4) 一次式の論理和 (−o が or 演算子です)。
例
パス名に find を含んだアクセス可能なファイルを全部見つけるには:
find find
ls に関するすべてのマニュアルを探すには:
find ’∗man∗/ls.?’
1 週間アクセスされていない、または NFS を使ってマウントされていない a.out や ∗.o というファイルをすべて削除するには:
find / \( −name a.out −o −name ’∗.o’ \) −atime +7 −exec rm {} \; −o -fstype nfs −prune
関連ファイル
/etc/passwd
/etc/group
/usr/lib/find/find.codes コード化されたパス名データベース
関連事項
sh(1), test(1), fs(5) cpio(1),
関連文書 ;login: (1983年2月発行)
バグ
最初の形式の構文は入力が大変で、2 番目の形式の意味は紛らわしく、 サイト(ホスト)によって変わることもあります。
複数の −newer オプションを指定すると正しく働きません。
NEWS-OSRelease 4.2.1R