FIND(1) — UNIX 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∗ であるかのように突き合わせされます。 メタキャラクタがある場合には、 暗黙的なメタキャラクタはありません。
−ftype fype
タイプ 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 のいずれかで、 それぞれブロック型のスペシャルファイル、 キャラクタ型のスペシャルファイル、 ディレクトリ、 普通のファイル、 シンボリックリンク、 ソケットを 表します。
−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 常に真。 find が、現在の argument のパス名が存在するファイルシステム以外をサーチ しない ようにします。
−depth 常に真。 ディレクトリ内の全てのエントリをディレクトリ自身より先に見て、 ディレクトリ階層構造を下がっていきます。
一次式は、 次の演算子(優先順位の高い順)を使用して組み合わせることができます。
1) かっこで囲まれた一群の一次式と演算子(かっこはシェルにとって特別な意味を 持つので、エスケープしなければなりません)。
2) 一次式の否定 (‘!’ が単項の not 演算子です)。
3) 一次式の連結 (and 演算は 2つの一次式を並べて記述することによって、 暗黙に指定されたことになります)。
4) 一次式の論理和 (’−o’ が or 演算子です)。
例
パス名に ‘find’ を含み、すべての者からアクセス可能なファイルを見つける:
find find
‘ls’ に関するすべてのマニュアルを印字する:
ditroff −man ‘find ’∗man∗/ls.?’‘ | lpr −n
‘a.out’ または ‘∗.o’ という名前のファイルの中で 1週間アクセスされていないものを すべて削除する:
find / \( −name a.out −o −name ’∗.o’ \) −atime +7 −exec rm {} \;
関連ファイル
/etc/passwd
/etc/group
/usr/lib/find/find.codesコード化されたパス名データベース
関連事項
sh(1), test(1), fs(5)
1983年2月発行の ;login: の関連文書
バグ
最初の形式の構文は入力は大変ですし、2番目の形式の意味は紛らわしく、 サイト(ホスト)によって変わることもあります。
複数の ‘−newer’ オプションを指定しても正しく働きません。
NEWS-OSRelease 3.3