home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 February
/
VPR9602A.ISO
/
fwindows
/
archive
/
tmedt090.lzh
/
TOOLD101.LZH
/
MAN.LZH
/
FINDF.MAN
< prev
next >
Wrap
Text File
|
1994-11-20
|
6KB
|
132 lines
FINDF(1) Reference Manual FINDF(1)
NAME
findf - ファイルの検索
SYNOPSIS
findf pathname [pathname ...] expression
DESCRIPTION
findf は、pathnameで指定された各パス、およびそれがディレクトリで
あればその下を再帰的に検索し、見つかった各ファイルおよびディレク
トリについてexpression を評価する。
expression は下に示すプリミティブ、あるいはそれを演算子「!」(否定)、
「-a」(かつ)、「-o」(または)や括弧「(」「)」で組み合わせたもので
ある(前3者の優先順位は「!」「-a」「-o」である)。但し、演算子「-a」
は省略することができる。すなわち、expressionを2つ続けて書けばその
間に暗黙の「-a」があるものとして扱われる。
プリミティブを構成する各々の語や、また演算子や括弧は全て、findfコ
マンドへのそれぞれ独立した引数として与えなければならない。
なお、以下の文中でn とあるのは、10進の数字である。また、+n と書く
と「nより大きい数」、-n と書くと「nより小さい数」を表すことができ
る。
expression の評価は、全体の値が真か偽のどちらかに定まった時点で終
了し、残りの部分は評価されない。例えばexp1 -a exp2の評価にあたっ
て、exp1が偽であればexp2は評価しない。
-name filename: 探索したファイル名がfilenameにマッチする場合に真。
filenameの中ではワイルドカードを使えるが、その場合は全体を「
" "」で囲むなどしてエスケープしないと、コマンドの実行開始前に
展開されて構文エラーとなる。
-perm 8進数: ファイルのアクセス許可モード(UNIX流のrwxビットに直し
たもの、例えば読み書き可能の非実行通常ファイルなら0100666)が
指定した8進数に一致すれば真。「8進数」の前に「-」を付けると、
「そのファイルの許可モード & 指定した8進数」がその8進数に一致
するかどうかの判断に変わる。
-prune: 常に真で、副作用として現在のパス以下のディレクトリの検索
をしなくなる。
-type 文字: 文字は「cdf」のいずれか。cはデバイスファイル、dはディ
レクトリ、fは通常ファイル(ディレクトリでもデバイスファイルで
もボリュームファイルでもないもの)を表し、現在のファイルがそれ
に該当する場合に真となる。
-attr string: stringは文字「adhoswx」だけからなる文字列。aはアー
カイブビットが立っていること、dはディレクトリ、hは隠しファイ
ル、oは書き込み禁止、sはシステム属性、wは書き込み許可、xは実
行可能またはディレクトリであることを表し、現在のファイルがそ
の全ての性質を持っている場合に真となる。
-size n: ファイルのサイズがnブロックなら真。但し1ブロックは常に5
12バイトとして数える。nの後ろにcがつくとサイズはバイト単位で
比較する。
-mtime n: ファイルの更新時刻がn日前であれば真。「n日前」とは正確
には、現時刻のn日前以前で、n+1日前より後を指す。
-exec command: commandにはコマンドラインを記述し、最後に「;」を付
加する。そのコマンドを実行し、終了コードが0であった場合に真。
コマンドの各引数および最後の「;」は、空白で区切ってそれぞれを
findfの独立した引数として与えねばならない。なお、「{}」があれ
ばそれは現在のパス名に置き換わる。
-ok command: コマンドラインの一部を表示し、ユーザのキー入力を受け
付け、それが「Y」か「y」であった場合のみコマンドを実行するこ
とを除き、-execと同じである。
-print: 常に真で、副作用として現在のパス名を表示。
-ls: 常に真で、副作用として現在のパスに関する情報をls -lsと同じ形
式で表示。
-newer filename: そのファイルの更新時刻がfilenameで与えられるファ
イルの更新時刻より後なら真。
-depth: 常に真。これがあると、ディレクトリ内の全てのファイルの方
がそのディレクトリより先に検索される。なおこれは、特に特定の
パス名に対して評価が行われなくても、全体の検索順序に影響を与
える(UNIXでもそうなっているみたい)。
EXAMPLES
findf a:/foo a:/bar -type f -newer /bar.dat -print
ファイルA:/fooおよびA:/bar、あるいはそれらがディレクトリであれば
その下にあるファイルのうち、通常ファイルであってかつ、/bar.datよ
り更新時刻が新しいものについて、そのファイル名を出力。
findf ba* -type f ( -name "*.exe" -o -exec find '/n '"char'"
{} ; )
baで始まる名前のファイル、あるいはそれがディレクトリがあればその
下にあるファイルのうち、通常ファイルであってかつ名前が「*.exe」に
マッチしないものについて、「find /n "char" 見つかったファイル」を
実行(DOSの標準外部コマンドfindを使っている)。「ba*」のワイルドカ
ードは展開される。一方、「*.exe」のワイルドカードは展開させないよ
うに「" "」でエスケープしている。また、「'/n」としている理由は、
単に「/n」と書くとtoolsの引数解釈ルーチンによって「\n」に変えられ
るため。その次の「'"char'"」も、単に「"char"」ではtoolsの引数解釈
ルーチンによって「char」と解釈されてしまうため、「"char"」が渡さ
れるよう「'」で「"」をエスケープしている。
findf ba* -type f ( -name "*.exe" -o -exec fgrep -n char
{} ; )
上の例とほぼ同じことをtoolsのfgrepを使って行う例。
findf ba* -type f ( -name "*.exe" -o -print ) | fgrep -n
char @-
上の例とほぼ同じだが、fgrepを1回しか起こさないため効率がよい。to
olsの間接引数展開機能の特例をうまく使った例。もっとも、findfが見
つけたファイルがあまり多いと、「@-」の展開でメモリ不足を起こすか
もしれない。
SEE ALSO
wild(5), setarg(5)
BUGS
ファイルの検索される順序は、ディレクトリに格納されている順番通り
であり、ソートされない。
toolsのワイルドカードは、ファイル名の先頭の「_」をマッチ対象から
除外しているので、-name "*" は「_」で始まるファイル名に対しては真
にならない。-name "_*" は真になる。
UNIXと違いMS-DOSでは括弧や「;」が特殊文字でないので、括弧や、-ex
ecの終端の「;」をエスケープする必要はない。但し、フリーソフト「h
istory」を動かしているなど、コマンドライン中の「;」が特別に解釈さ
れる状況下では、「;」はエスケープしなくてはならない。