\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename find-ja.info
@settitle Finding Files
@c For double-sided printing, uncomment:
@c @setchapternewpage odd
@c %**end of header

@include find-v.texi

@iftex
@finalout
@end iftex

@dircategory Basics
@direntry
* Finding files(ja): (find-ja).        Operating on files matching certain criteria.
@end direntry

@dircategory Individual utilities
@direntry
* find(ja): (find-ja)Invoking find.                Finding and acting on files.
* locate(ja): (find-ja)Invoking locate.            Finding files in a database.
* updatedb(ja): (find-ja)Invoking updatedb.        Building the locate database.
* xargs(ja): (find-ja)Invoking xargs.              Operating on many files.
@end direntry

@copying

This file documents the GNU utilities for finding files that match
certain criteria and performing various operations on them.

Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005 Free
Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.
@end copying

@titlepage
@title Finding Files
@subtitle Edition @value{EDITION}, for GNU @code{find} version @value{VERSION}
@subtitle @value{UPDATED}
@author by David MacKenzie
@c 翻訳：西尾 太

@page
@vskip 0pt plus 1filll
@insertcopying{}
@end titlepage

@contents

@ifnottex
@node Top, Introduction, , (dir)
@comment  node-name,  next,  previous,  up

@c This file documents the GNU utilities for finding files that match
@c certain criteria and performing various actions on them.
@c This is edition @value{EDITION}, for @code{find} version @value{VERSION}.
@c 
このファイルは，特定の基準にマッチするファイルを検索し，それらに様々な
アクションを実行するGNUユーティリティの説明です．これは，@code{find}の
バージョン@value{VERSION}に対する，エディション@value{EDITION}です．
@end ifnottex

@c The master menu, created with texinfo-master-menu, goes here.

@menu
* Introduction::                Summary of the tasks this manual describes.
* Finding Files::               Finding files that match certain criteria.
* Actions::                     Doing things to files you have found.
* Common Tasks::                Solutions to common real-world problems.
* Databases::                   Maintaining file name databases.
* File Permissions::            How to control access to files.
* Reference::                   Summary of how to invoke the programs.
* Security Considerations::     Security issues relating to findutils.
* Error Messages::              Explanations of some messages you might see.
* Primary Index::               The components of @code{find} expressions.
@end menu

@node Introduction, Finding Files, Top, Top
@c @chapter Introduction
@chapter はじめに

@c This manual shows how to find files that meet criteria you specify, and
@c how to perform various actions on the files that you find.  The
@c principal programs that you use to perform these tasks are @code{find},
@c @code{locate}, and @code{xargs}.  Some of the examples in this manual
@c use capabilities specific to the GNU versions of those programs.
@c 
このマニュアルは，指定した基準に合ったファイルを検索する方法と，見つけ
たファイルに様々なアクションを実行する方法を示します．これらの作業を実
行するために使用する主なプログラムは，@code{find}，@code{locate}，そし
て@code{xargs}です．このマニュアルにある例は，これらのプログラムのGNUバー
ジョン特有の能力を使用します．

@c GNU @code{find} was originally written by Eric Decker, with enhancements
@c by David MacKenzie, Jay Plett, and Tim Wood.  GNU @code{xargs} was
@c originally written by Mike Rendell, with enhancements by David
@c MacKenzie.  GNU @code{locate} and its associated utilities were
@c originally written by James Woods, with enhancements by David MacKenzie.
@c The idea for @samp{find -print0} and @samp{xargs -0} came from Dan
@c Bernstein.  The current maintainer of GNU findutils (and this manual) is
@c James Youngman.  Many other people have contributed bug fixes, small
@c improvements, and helpful suggestions.  Thanks!
@c 
GNU @code{find}は，元々Eric Deckerによって書かれ，David MacKenzie，Jay
Plett，そしてTim Woodによって拡張されました．GNU @code{xargs}は，元々
Mike Rendellによって書かれ，David MacKenzieによって拡張されました．GNU
@code{locate}とそれに関連するユーティリティは，元々James Woodsによって
書かれ，David MacKenzieよって拡張されました．@samp{find -print0}と
@samp{xargs -0}に関するアイデアは，Dan Bernsteinによります．GNU
findutils (とこのマニュアル)の現在の監理者はJames Youngman.です．その他，
多くの人がバグの修正，小さな改良，そして有益な提案を寄与してくれました．
どうもありがとう！

@c Mail suggestions and bug reports for these programs to
@c @code{bug-findutils@@gnu.org}.  Please include the version
@c number, which you can get by running @samp{find --version}.
@c 
これらのプログラムに関するメールでの提案とバグの報告先は
@code{bug-findutils@@gnu.org}になります．@samp{find --version}を実行し
て得られるバージョンナンバーを含めてください．

@menu
* Scope::
* Overview::
* find Expressions::
@end menu

@node Scope
@c @section Scope
@section スコープ

@c For brevity, the word @dfn{file} in this manual means a regular file, a
@c directory, a symbolic link, or any other kind of node that has a
@c directory entry.  A directory entry is also called a @dfn{file name}.  A
@c file name may contain some, all, or none of the directories in a path
@c that leads to the file.  These are all examples of what this manual
@c calls ``file names'':
@c 
簡潔にするため，このマニュアル内の単語@dfn{ファイル(file)}は，通常のファ
イル，ディレクトリ，シンボリックリンク，またはディレクトリエントリを持
つノードのようなその他のあらゆるものを意味します．ディレクトリエントリ
は@dfn{ファイル名(file name)}とも呼ばれます．ファイル名は，ファイルに前
置されるパス内のディレクトリを，いくつか含む，すべて含む，または全く含
まないかもしれません．このマニュアルで``ファイル名''と呼ばれるもののす
べての例は以下のものです．

@example
parser.c
README
./budget/may-94.sc
fred/.cshrc
/usr/local/include/termcap.h
@end example

@c A @dfn{directory tree} is a directory and the files it contains, all of
@c its subdirectories and the files they contain, etc.  It can also be a
@c single non-directory file.
@c 
@dfn{ディレクトリツリー(file name)}はディレクトリとそれが含むファイル，
そのすべてのサブディレクトリとそれが含むファイル等です．それは，単一の
ディレクトリではないファイルにすることも可能です．

@c These programs enable you to find the files in one or more directory
@c trees that:
@c 
これらのプログラムは，一つまたはそれ以上のディレクトリツリー内部の，以
下のようなファイルを見つけることを可能にします．

@itemize @bullet
@item
@c have names that contain certain text or match a certain pattern;
@c 
特定のテキストや特定のパターンにマッチする名前を持つもの．
@item
@c are links to certain files;
@c 
特定のファイルにリンクしているもの．
@item
@c were last used during a certain period of time;
@c 
最近の特定の期間に使用されたもの．
@item
@c are within a certain size range;
@c 
特定の大きさの範囲にあるもの．
@item
@c are of a certain type (regular file, directory, symbolic link, etc.);
@c 
特定の形式(通常のファイル，ディレクトリ，シンボリックリンク等)のもの．
@item
@c are owned by a certain user or group;
@c 
特定のユーザやグループに所有されているもの．
@item
@c have certain access permissions;
@c 
特定のアクセス権限を持つもの．
@item
@c contain text that matches a certain pattern;
@c 
特定のパターンにマッチするテキストを含むもの．
@item
@c are within a certain depth in the directory tree;
@c 
ディレクトリツリーの特定の深さにあるもの．
@item
@c or some combination of the above.
@c 
上記の組み合わせ．
@end itemize

@c Once you have found the files you're looking for (or files that are
@c potentially the ones you're looking for), you can do more to them than
@c simply list their names.  You can get any combination of the files'
@c attributes, or process the files in many ways, either individually or in
@c groups of various sizes.  Actions that you might want to perform on the
@c files you have found include, but are not limited to:
@c 
一旦，探しているファイル(または，探している可能性があるファイル)を見つ
けると，単純なそれらの名前のリスト以上のものにすることが可能です．ファ
イルを個別に，または様々な大きさのまとまりとして，属性のあらゆる組み合
わせを取得したり，多くの方法で処理したりすることが可能です．見つけたファ
イル上で実行したい動作は，以下のことだけに制限されません．

@itemize @bullet
@item
@c view or edit
@c 
閲覧または編集．
@item
@c store in an archive
@c 
アーカイブへ保存．
@item
@c remove or rename
@c 
削除や名前の変更．
@item
@c change access permissions
@c 
アクセス権限の変更．
@item
@c classify into groups
@c 
グループ分け．
@end itemize

@c This manual describes how to perform each of those tasks, and more.

このマニュアルでは，これらのそれぞれの作業を実行する方法と，それ以上の
ものを記述しています．

@node Overview
@c @section Overview
@section 概要

@c The principal programs used for making lists of files that match given
@c criteria and running commands on them are @code{find}, @code{locate},
@c and @code{xargs}.  An additional command, @code{updatedb}, is used by
@c system administrators to create databases for @code{locate} to use.
@c 
与えられた基準にマッチするファイルのリストを作成し，その上でコマンドを
実行するために使用される主なプログラムは，@code{find}，@code{locate}，
そして@code{xargs}です．追加のコマンドは@code{updatedb}で，それは
@code{locate} が使用するデータベースを作成するために，システム管理者が
使用します．

@c @code{find} searches for files in a directory hierarchy and prints
@c information about the files it found.  It is run like this:
@c 
@code{find}はディレクトリ階層内でファイルを検索し，見つかったファイルの
情報を出力します．以下のように実行します．

@example
find @r{[}@var{file}@dots{}@r{]} @r{[}@var{expression}@r{]}
@end example

@noindent
@c Here is a typical use of @code{find}.  This example prints the names of
@c all files in the directory tree rooted in @file{/usr/src} whose name
@c ends with @samp{.c} and that are larger than 100 Kilobytes.
@c 
ここに典型的な@code{find}の使用方法があります．この例では，
@file{/usr/src} をルートとしたディレクトリツリー内で，名前が@samp{.c}で
終り，100Kバイト以上の大きさを持つ，すべてのファイルの名前を出力します．
@example
find /usr/src -name '*.c' -size +100k -print
@end example

@c Notice that the wildcard must be enclosed in quotes in order to
@c protect it from expansion by the shell.
@c 
ワイルドカードは，シェルでの展開から守るため，確実に引用符で囲む必要が
あることに注意してください．

@c @code{locate} searches special file name databases for file names that
@c match patterns.  The system administrator runs the @code{updatedb}
@c program to create the databases.  @code{locate} is run like this:
@c 
@code{locate}は，特別なファイル名のデータベースで，パターンにマッチする
ファイル名を探します．システム管理者は，データベースを作成するために
@code{updatedb}を実行します．@code{locate}は以下のように実行します．

@example
locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{}
@end example

@noindent
@c This example prints the names of all files in the default file name
@c database whose name ends with @samp{Makefile} or @samp{makefile}.  Which
@c file names are stored in the database depends on how the system
@c administrator ran @code{updatedb}.
@c 
この例は，デフォルトファイル名のデータベースで，名前が@samp{Makefile}ま
たは@samp{makefile}で終わる，すべてのファイルの名前を出力します．データ
ベースに保存されるファイル名は，システム管理者が@code{updatedb}を実行し
た方法に依存します．
@example
locate '*[Mm]akefile'
@end example

@c The name @code{xargs}, pronounced EX-args, means ``combine arguments.''
@c @code{xargs} builds and executes command lines by gathering together
@c arguments it reads on the standard input.  Most often, these arguments
@c are lists of file names generated by @code{find}.  @code{xargs} is run
@c like this:
@c 
名前@code{xargs}は，EX-argsと発音され，それは``引数を統合する''という意
味があります．@code{xargs}は，標準入力から読み込む引数をかき集めてコマ
ンド行を構築し実行します．これらの引数は，@code{find}で生成されるファイ
ル名のリストとなることが最も多くなっています．@code{xargs}は，以下のよ
うに実行します．

@example
xargs @r{[}@var{option}@dots{}@r{]} @r{[}@var{command} @r{[}@var{initial-arguments}@r{]}@r{]}
@end example

@noindent
@c The following command searches the files listed in the file
@c @file{file-list} and prints all of the lines in them that contain the
@c word @samp{typedef}.
@c 
以下のコマンドは，ファイル@file{file-list}内にリストアップされているファ
イルを検索し，単語@samp{typedef}を含むもののすべての行を出力します．
@example
xargs grep typedef < file-list
@end example

@node find Expressions
@c @section @code{find} Expressions
@section @code{find}の式

@c The expression that @code{find} uses to select files consists of one or
@c more @dfn{primaries}, each of which is a separate command line argument
@c to @code{find}.  @code{find} evaluates the expression each time it
@c processes a file.  An expression can contain any of the following types
@c of primaries:
@c 
ファイルを選択するために@code{find}が使用する式は，一つまたはそれ以上の
@dfn{プライマリ(primaries)}から成り立ち，それらはそれぞれ分離した
@code{find}へのコマンドライン引数です．@code{find}はそのたびに式を評価
し，ファイルを処理します．式は以下のプライマリの形式のいずれかを含むこ
とが可能です．

@table @dfn
@c @item options
@c affect overall operation rather than the processing of a specific file;
@c @item tests
@c return a true or false value, depending on the file's attributes;
@c @item actions
@c have side effects and return a true or false value; and
@c @item operators
@c connect the other arguments and affect when and whether they are
@c evaluated.
@c 
@item オプション(options)
特定のファイルの処理ではなく全体的な処理に影響を与えます．
@item テスト(tests)
ファイルの属性に依存し，真または偽の値を返します．
@item アクション(actions)
それらを評価するとき他の引数と連結し影響を与えます．
@end table

@c You can omit the operator between two primaries; it defaults to
@c @samp{-and}.  @xref{Combining Primaries With Operators}, for ways to
@c connect primaries into more complex expressions.  If the expression
@c contains no actions other than @samp{-prune}, @samp{-print} is performed
@c on all files for which the entire expression is true (@pxref{Print File
@c Name}).
@c 
二つのプライマリの間のオペレータは省略可能です．そのデフォルトは
@samp{-and}です．プライマリをより複雑な式に連結する方法は，
@xref{Combining Primaries With Operators}.  式が@samp{-prune}以外のアク
ションを含まない場合，全部の式が真になるすべてのファイルで，
@samp{-print}が動作します(@pxref{Print File Name})．

@c Options take effect immediately, rather than being evaluated for each
@c file when their place in the expression is reached.  Therefore, for
@c clarity, it is best to place them at the beginning of the expression.
@c 
式の中にオプションがあるとき，それぞれのファイルに対し評価されるのでは
なく，すぐに影響を与えます．そのため，明確にするため，式の最初にそれら
を配置するのが最善です．

@c Many of the primaries take arguments, which immediately follow them in
@c the next command line argument to @code{find}.  Some arguments are file
@c names, patterns, or other strings; others are numbers.  Numeric
@c arguments can be specified as
@c 
プライマリの多くは引数をとり，それらは@code{find}への次のコマンドライン
引数の直後に続きます．引数は，ファイル名，パターン，またはその他の文字
列になるものもあります．それ以外は数字です．数字の引数は以下のように指
定することが可能です．

@table @code
@item +@var{n}
@c for greater than @var{n},
@c 
@var{n}より大きい．
@item -@var{n}
@c for less than @var{n},
@c 
@var{n}より小さい．
@item @var{n}
@c for exactly @var{n}.
@c 
@var{n}に等しい．
@end table

@node Finding Files, Actions, Introduction, Top
@c @chapter Finding Files
@chapter ファイル検索

@c By default, @code{find} prints to the standard output the names of the
@c files that match the given criteria.  @xref{Actions}, for how to get more
@c information about the matching files.
@c 
デフォルトで，@code{find}は標準出力に，与えられた基準にマッチするファイ
ルの名前を出力します．マッチしたファイルに関する詳細を取得する方法は，
@xref{Actions}.

@menu
* Name::
* Links::
* Time::
* Size::
* Type::
* Owner::
* Permissions::
* Contents::
* Directories::
* Filesystems::
* Combining Primaries With Operators::
@end menu

@node Name
@c @section Name
@section 名前

@c Here are ways to search for files whose name matches a certain pattern.
@c @xref{Shell Pattern Matching}, for a description of the @var{pattern}
@c arguments to these tests.
@c 
基準パターンにマッチする名前を持つファイルを検索する方法は，以下のよう
になります．これらのテストでの@var{pattern}引数の記述については，
@xref{Shell Pattern Matching}.

@c Each of these tests has a case-sensitive version and a case-insensitive
@c version, whose name begins with @samp{i}.  In a case-insensitive
@c comparison, the patterns @samp{fo*} and @samp{F??} match the file names
@c @file{Foo}, @samp{FOO}, @samp{foo}, @samp{fOo}, etc.
@c 
これらのテストには，@samp{i}で始まる名前を持つ，大文字小文字を区別バー
ジョンと区別しないバージョンがあります．大文字小文字を区別しない比較で
は，パターン@samp{fo*}と@samp{F??}は，ファイル名@file{Foo}，@samp{FOO}，
@samp{foo}，@samp{fOo}等にマッチします．

@menu
* Base Name Patterns::
* Full Name Patterns::
* Fast Full Name Search::
* Shell Pattern Matching::      Wildcards used by these programs.
@end menu

@node Base Name Patterns
@c @subsection Base Name Patterns
@subsection ベース名のパターン

@deffn Test -name pattern
@deffnx Test -iname pattern
@c True if the base of the file name (the path with the leading directories
@c removed) matches shell pattern @var{pattern}.  For @samp{-iname}, the
@c match is case-insensitive.  To ignore a whole directory tree, use
@c @samp{-prune} (@pxref{Directories}).  As an example, to find Texinfo
@c source files in @file{/usr/local/doc}:
@c 
ファイル名のベース(前置されるディレクトリが削除されたパス)がシェルパター
ン@var{pattern}にマッチする場合は真です．@samp{-iname}の場合は，大文字
小文字の区別をしないマッチです．ディレクトリツリー全体を無視するために，
@samp{-prune}を使用して下さい(@pxref{Directories})．例として，
@file{/usr/local/doc}のTexinfoソースファイルを見つけるため以下のように
します．

@example
find /usr/local/doc -name '*.texi'
@end example
@end deffn

@c Notice that the wildcard must be enclosed in quotes in order to
@c protect it from expansion by the shell.
@c 
ワイルドカードは，シェルでの展開から守るため，確実に引用符で囲む必要が
あることに注意してください．

@c Patterns for @samp{-name} and @samp{-iname} will match a filename with
@c a leading @samp{.}.  For example the command @samp{find /tmp -name
@c \*bar} will match the file @file{/tmp/.foobar}.
@c 
@samp{-name}と@samp{-iname}に対するパターンは，前に@samp{.}が付いている
ファイル名にもマッチします．例えば，コマンド@samp{find /tmp -name
\*bar} はファイル@file{/tmp/.foobar}にマッチします．

@node Full Name Patterns
@c @subsection Full Name Patterns
@subsection 完全なファイル名のパターン

@deffn Test -wholename pattern
@deffnx Test -iwholename pattern
@c True if the entire file name, starting with the command line argument
@c under which the file was found, matches shell pattern @var{pattern}.
@c For @samp{-iwholename}, the match is case-insensitive.  To ignore a
@c whole directory tree, use @samp{-prune} rather than checking every
@c file in the tree (@pxref{Directories}).  The ``entire file name'' as
@c used by find starts with the starting-point specified on the command
@c line, and is not converted to an absolute pathname, so for example
@c @code{cd /; find tmp -wholename /tmp} will never match anything.
@c 
コマンドライン引数で始まる見つかったファイルのファイル名全体が，シェル
パターン@var{pattern}にマッチする場合は真になります．
@samp{-iwholename}では，マッチ時に大文字小文字を区別します．ディレクト
リツリーのすべてのファイルを調査するのではなく，ディレクトリツリー全体
を無視するために，@samp{-prune}を使用してください(@pxref{Directories})．
@command{find}が使用する``entire file name''は，コマンドラインで指定す
る起点で，絶対パスに変換されないので，例えば，@code{cd /; find tmp
-wholename /tmp}では何にもマッチしません．
@end deffn

@deffn Test -path pattern
@deffnx Test -ipath pattern
@c These tests are deprecated, but work as for @samp{-wholename} and
@c @samp{-iwholename}, respectively.  The @samp{-ipath} test is a GNU
@c extension, but @samp{-path} is also provided by HP-UX @code{find}.
@c 
これらのテストは推奨されませんが，@samp{-wholename}と
@samp{-iwholename}は，それぞれ動作します．@samp{-ipath}のテストはGNUの
拡張ですが，@samp{-path}はHP-UX @code{find}でも提供されています．
@end deffn

@deffn Test -regex expr
@deffnx Test -iregex expr
@c True if the entire file name matches regular expression @var{expr}.
@c This is a match on the whole path, not a search.  For example, to match
@c a file named @file{./fubar3}, you can use the regular expression
@c @samp{.*bar.} or @samp{.*b.*3}, but not @samp{f.*r3}.  @xref{Regexps, ,
@c Syntax of Regular Expressions, emacs, The GNU Emacs Manual}, for a
@c description of the syntax of regular expressions.  For @samp{-iregex},
@c the match is case-insensitive.
@c 
ファイル名全体が正規表現@var{expr}にマッチする場合は真です．これはパス
全体へのマッチで，サーチではありません．例えば，@file{./fubar3}というファ
イル名にマッチさせるため，正規表現@samp{.*bar.}や@samp{.*b.*3}は使用可
能ですが，@samp{f.*r3}は不可能です．正規表現の構文の記述は，
@xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
Manual}.  @samp{-iregex}の場合は，大文字小文字を区別しません．
@end deffn

@node Fast Full Name Search
@c @subsection Fast Full Name Search
@subsection すばやい完全な名前の検索

@c To search for files by name without having to actually scan the
@c directories on the disk (which can be slow), you can use the
@c @code{locate} program.  For each shell pattern you give it,
@c @code{locate} searches one or more databases of file names and displays
@c the file names that contain the pattern.  @xref{Shell Pattern Matching},
@c for details about shell patterns.
@c 
実際にディスク上のディレクトリをスキャンすることなく(きっと遅いでしょ
う)，ファイルを名前で検索するために，@code{locate}プログラムを使用する
ことが可能です．与えたそれぞれのシェルパターンに対し，@code{locate}は，
一つ，またはそれ以上のファイル名のデータベースを検索し，パターンを含む
ファイル名を表示します．シェルパターンの詳細は，@xref{Shell Pattern
Matching}.

@c If a pattern is a plain string---it contains no
@c metacharacters---@code{locate} displays all file names in the database
@c that contain that string.  If a pattern contains
@c metacharacters, @code{locate} only displays file names that match the
@c pattern exactly.  As a result, patterns that contain metacharacters
@c should usually begin with a @samp{*}, and will most often end with one
@c as well.  The exceptions are patterns that are intended to explicitly
@c match the beginning or end of a file name.   
@c 
パターンが---メタ文字を含まない---通常の文字列の場合，@code{locate}は，
文字列を含むすべてのファイル名を表示します．パターンがメタ文字を含む場
合，@code{locate}はパターンに正確にマッチしているファイル名のみ表示しま
す．結果として，メタ文字を含むパターンは，通常@samp{*}で開始すべきで，
同じもので終わることが最も多くなっています．例外は，ファイル名の最初ま
たは最後への，明示的なマッチを試みるパターンです．

@c If you only want @code{locate} to match against the last component of
@c the filenames (the ``base name'' of the files) you can use the
@c @samp{--basename} option.  The opposite behaviour is the default, but
@c can be selected explicitly by using the option @samp{--wholename}.
@c 
@code{locate}をファイル名の最後の部分(ファイルの``ベース名'')に対しての
みマッチさせたい場合，@samp{--basename}を使用することが可能です．反対の
動作がデフォルトですが，@samp{--wholename}オプションを使用して，明示的
に選択することが可能です．

@c The command
@c 
以下のコマンドを考えます．
@example
locate @var{pattern}
@end example

@c is almost equivalent to
@c 
以下とほとんど等価です．
@example
find @var{directories} -name @var{pattern}
@end example

@c where @var{directories} are the directories for which the file name
@c databases contain information.  The differences are that the
@c @code{locate} information might be out of date, and that @code{locate}
@c handles wildcards in the pattern slightly differently than @code{find}
@c (@pxref{Shell Pattern Matching}).
@c 
ここでの@var{directories}は，情報を含んでいるファイル名データベースのディ
レクトリです．違いは@code{locate}情報が古い可能性があり，そして，
@code{locate}は@code{find}とわずかに異なるパターンでワイルドカードを扱
うことです(@pxref{Shell Pattern Matching}) ．

@c The file name databases contain lists of files that were on the system
@c when the databases were last updated.  The system administrator can
@c choose the file name of the default database, the frequency with which
@c the databases are updated, and the directories for which they contain
@c entries.
@c 
ファイル名データベースには，データベースが最後に更新されたときにシステ
ムに存在したファイルのリストが含まれています．システム管理者はデフォル
トのデータベースのファイル名，データベースを更新する頻度，そして，エン
トリーを含むディレクトリを選択することが可能です．

@c Here is how to select which file name databases @code{locate} searches.
@c The default is system-dependent.
@c 
@code{locate}が検索するファイル名データベースを選択する方法は以下のよう
になります．デフォルトはシステムに依存します．

@table @code
@item --database=@var{path}
@itemx -d @var{path}
@c Instead of searching the default file name database, search the file
@c name databases in @var{path}, which is a colon-separated list of
@c database file names.  You can also use the environment variable
@c @code{LOCATE_PATH} to set the list of database files to search.  The
@c option overrides the environment variable if both are used.
@c 
デフォルトのファイル名データベースを検索する代わりに，@var{path}内のファ
イル名データベースを検索し，それはコロンで分けられたデータベースのファ
イル名リストとなります．検索するデータベースファイルのリストを設定する
ために，環境変数@code{LOCATE_PATH}を使用することも可能です．両方使用さ
れている場合，オプションは環境変数に優先します．
@end table

@node Shell Pattern Matching
@c @subsection Shell Pattern Matching
@subsection シェルパターンマッチング

@c @code{find} and @code{locate} can compare file names, or parts of file
@c names, to shell patterns.  A @dfn{shell pattern} is a string that may
@c contain the following special characters, which are known as
@c @dfn{wildcards} or @dfn{metacharacters}.
@c 
@code{find}と@code{locate}は，ファイル名やファイル名の一部を，シェルパ
ターンと比較することが可能です．@dfn{シェルパターン(hell pattern)}は，
以下の特殊文字を含む文字列で，それは@dfn{ワイルドカード(wildcards)}や
@dfn{メタ文字(metacharacters)}として知られています．

@c You must quote patterns that contain metacharacters to prevent the shell
@c from expanding them itself.  Double and single quotes both work; so does
@c escaping with a backslash.
@c 
メタ文字を含むパターンを，シェルがそれ自身を展開することから避けるため
引用符で囲む必要があります．二重引用符とシングル引用符の両方が動作しま
す．そのため，(それ自身は)バックスラッシュでエスケープします．

@table @code
@item *
@c Matches any zero or more characters.
@c 
ゼロ以上の文字にマッチします．
@item ?
@c Matches any one character.
@c 
あらゆる一文字にマッチします．
@item [@var{string}]
@c Matches exactly one character that is a member of the string
@c @var{string}.  This is called a @dfn{character class}.  As a shorthand,
@c @var{string} may contain ranges, which consist of two characters with a
@c dash between them.  For example, the class @samp{[a-z0-9_]} matches a
@c lowercase letter, a number, or an underscore.  You can negate a class by
@c placing a @samp{!} or @samp{^} immediately after the opening bracket.
@c Thus, @samp{[^A-Z@@]} matches any character except an uppercase letter
@c or an at sign.
@c 
文字列@var{string}に存在する，正確に一文字にマッチします．これは@dfn{文
字集合(character class)}と呼ばれます．短いものとして，@var{string}には
範囲を含めることが可能で，それは間にダッシュがある二つの文字です．例え
ば，集合@samp{[a-z0-9_]}は小文字，数字，またはアンダースコアです．
@samp{!}  や@samp{^}を開括弧の前に配置することで，否定集合も可能です．
このため，@samp{[^A-Z@@]}は大文字とアットマーク以外にマッチします．

@item \
@c Removes the special meaning of the character that follows it.  This
@c works even in character classes.
@c 
それ以降の特殊文字の意味をなくします．これは文字集合でも動作します．
@end table

@c In the @code{find} tests that do shell pattern matching (@samp{-name},
@c @samp{-wholename}, etc.), wildcards in the pattern will match a @samp{.}
@c at the beginning of a file name.  This is also the case for
@c @code{locate}.  Thus, @samp{find -name '*macs'} will match a file
@c named @file{.emacs}, as will @samp{locate '*macs'}.
@c 
@code{find}がシェルのパターンマッチ(@samp{-name}，@samp{-wholename}等)
で行なうテストでは，パターンの中のワイルドカードはファイル名の最初の
@samp{.}にマッチしません．これは@code{locate}ではそうなりません．このた
め，@samp{find -name '*macs'}は@samp{locate '*macs'}だけでなく
@file{.emacs}にもマッチします．

@c Slash characters have no special significance in the shell pattern
@c matching that @code{find} and @code{locate} do, unlike in the shell, in
@c which wildcards do not match them.  Therefore, a pattern @samp{foo*bar}
@c can match a file name @samp{foo3/bar}, and a pattern @samp{./sr*sc} can
@c match a file name @samp{./src/misc}.
@c 
スラッシュ文字は，@code{find}と@code{locate}が行なうシェルのパターンマッ
チでは特殊な意味が無いので，ワイルドカードがそれにマッチしないシェルと
は異なります．そのため，パターン@samp{foo*bar}はファイル名
@samp{foo3/bar}にマッチし，パターン@samp{./sr*sc}はファイル名
@samp{./src/misc}にマッチするはずです．

@c If you want to locate some files with the @samp{locate} command but
@c don't need to see the full list you can use the @samp{--limit} option
@c to see just a small number of results, or the @samp{--count} option to
@c display only the total number of matches.
@c 
@samp{locate}コマンドでファイルの場所を知りたいが，完全なリストを見る必
要は無い場合，ちょっとした数の結果を見る@samp{--limit}オプションや，マッ
チの総数だけを表示する@samp{--count}オプションを使用することが可能です．


@node Links
@c @section Links
@section リンク

@c There are two ways that files can be linked together.  @dfn{Symbolic
@c links} are a special type of file whose contents are a portion of the
@c name of another file.  @dfn{Hard links} are multiple directory entries
@c for one file; the file names all have the same index node (@dfn{inode})
@c number on the disk.
@c 
ファイルをお互いにリンクすること可能にする方法は二つあります．@dfn{シン
ボリックリンク(symbolic link)}は，他のファイルの名前の部分が内容になる，
ファイルの特殊な形式です．@dfn{ハードリンク(hard link)}は，一つのファイ
ルに対する，複数のディレクトリエントリです．ファイル名はすべて，同じイ
ンデックスノード(@dfn{inode})番号をディスク上に持ちます．

@menu
* Symbolic Links::
* Hard Links::
@end menu

@node Symbolic Links
@c @subsection Symbolic Links
@subsection シンボリックリンク

@c Symbolic links are names that reference other files.  GNU @code{find}
@c will handle symbolic links in one of two ways; firstly, it can
@c dereference the links for you - this means that if it comes across a
@c symbolic link, it examines the file that the link points to, in order
@c to see if it matches the criteria you have specified.  Secondly, it
@c can check the link itself in case you might be looking for the actual
@c link.  If the file that the symbolic link points to is also within the
@c directory hierarchy you are searching with the @code{find} command,
@c you may not see a great deal of difference between these two
@c alternatives.
@c 
シンボリックリンクとは，他のファイルを参照する名前です．GNU
@code{find}は，シンボリックリンクを二つの方法のいずれかで処理します．最
初のものは，リンク先を参照する方法で，これはシンボリックリンクの場合は，
指定した特徴にマッチするかどうかを確認するため，リンク先のファイルを調
査することを意味します．二番目の方法は，実際のリンクを探している状況で，
リンク自身を調査することが可能です．シンボリックリンクのリンク先のファ
イルも，@code{find}コマンドで検索しているディレクトリ階層にある場合，こ
れら二つの選択肢の違いを詳しく理解しておく必要はありません．

@c By default, @code{find} examines symbolic links themselves when it
@c finds them (and, if it later comes across the linked-to file, it will
@c examine that, too).  If you would prefer @code{find} to dereference
@c the links and examine the file that each link points to, specify the
@c @samp{-L} option to @code{find}.  You can explicitly specify the
@c default behaviour by using the @samp{-P} option.    The @samp{-H}
@c option is a half-way-between option which ensures that any symbolic
@c links listed on the command line are dereferenced, but other symbolic
@c links are not.
@c 
デフォルトで，@code{find}はシンボリックリンクが見つかると，それ自身を調
査します(そして，その後でリンク先のファイルをたどり，それも調査します)．
@code{find}にリンク先を参照するようにし，リンクが示すファイルを調査させ
るため，@code{find}で@samp{-L}オプションを指定してください．デフォルト
の動作を明示的に指定するため，@samp{-P}オプションを使用することが可能で
す．@samp{-H}オプションは中間的なオプションで，コマンドラインでリストアッ
プされているシンボリックリンクはリンク先を参照しますが，それ以外のシン
ボリックリンクはリンク先を参照しません．

@c Symbolic links are different to ``hard links'' in the sense that you
@c need permissions upon the linked-to file in order to be able to
@c dereference the link.  This can mean that even if you specify the
@c @samp{-L} option, find may not be able to determine the properties of
@c the file that the link points to (because you don't have sufficient
@c permissions).  In this situation, @samp{find} uses the properties of
@c the link itself.  This also occurs if a symbolic link exists but
@c points to a file that is missing.
@c 
シンボリックリンクは``ハードリンク''とは異なり，リンク先を参照可能にす
るために，リンク先のファイルへの権限が必要になることを意味します．つま
り，@samp{-L}オプションを指定している場合でも，@code{find}はリンクが示
すファイルの属性を(十分な権限が無いという理由で)調査することができない
可能性があります．この状況では，@samp{find}はリンク自身の属性を使用しま
す．シンボリックリンクは存在するが，それが指し示すファイルが無い場合も，
同じようなことになります．

@c The options controlling the behaviour of @code{find} with respect to
@c links are as follows :-
@c 
リンクに関連した@code{find}の動作を制禦するオプションには，以下のものが
あります．

@table @samp
@item -P
@c @code{find} does not dereference symbolic links at all.  This is the
@c default behaviour.  This option must be specified before any of the
@c path names on the command line.
@c 
@code{find}はシンボリックリンク先を参照しません．これはデフォルトの動作
です．このオプションは，コマンドラインのパス名の前に指定する必要があり
ます．

@item -H
@c @code{find} does not dereference symbolic links (except in the case of
@c file names on the command line, which are dereferenced).  If a
@c symbolic link cannot be dereferenced, the information for the symbolic
@c link itself is used.  This option must be specified before any of the
@c path names on the command line.
@c 
@code{find}はシンボリックリンク先を参照しません(しかし，コマンドライン
上ののファイル名はリンク先を参照します)．シンボリックリンク先を参照でき
ない場合，シンボリックリンク自身の情報が使用されます．このオプションは，
コマンドラインのパス名の前に指定する必要があります．

@item -L
@c @code{find} dereferences symbolic links where possible, and where this
@c is not possible it uses the properties of the symbolic link itself.
@c This option must be specified before any of the path names on the
@c command line.  Use of this option also implies the same behaviour as
@c the @samp{-noleaf} option.   If you later use the @samp{-H} or
@c @samp{-P} options, this does not turn off @samp{-noleaf}.
@c 
@code{find}は，可能であればシンボリックリンク先を参照し，不可能なところ
では，シンボリックリンク自身の属性を使用します．このオプションはコマン
ドラインのパス名の前に指定する必要があります．このオプションを使用する
と，@samp{-noleaf}オプションと同じ動作も暗黙に指定されます．後で
@samp{-H}や@samp{-P}オプションを使用する場合でも，@samp{-noleaf}はオフ
になりません．

@item -follow
@c This option forms part of the ``expression'' and must be specified
@c after the path names, but it is otherwise equivalent to @samp{-L}.
@c 
このオプションは，``expression''の部分の形式で，パス名の後に指定する必
要がありますが，それ以外は@samp{-L}と同じです．
@end table

@c The following differences in behavior occur when the @samp{-L} option
@c is used:
@c 
@samp{-L}オプションを与えた時の動作には，以下の違いがあります．

@itemize @bullet
@item
@c @code{find} follows symbolic links to directories when searching
@c directory trees.
@c 
@code{find}は，ディレクトリツリーを検索するとき，ディレクトリへのシンボ
リックリンクをたどります．

@item
@c @samp{-lname} and @samp{-ilname} always return false (unless they
@c happen to match broken symbolic links).
@c 
@samp{-lname}と@samp{-ilname}は常に偽を返します(ただし，壊れたシンボリッ
クリンクにマッチしない限り)．

@item
@c @samp{-type} reports the types of the files that symbolic links point
@c to.
@c 
@samp{-type}はシンボリックリンクが示すファイルの形式を報告します．

@item
@c Implies @samp{-noleaf} (@pxref{Directories}).
@c 
暗黙に@samp{-noleaf}を指定します(@pxref{Directories})．
@end itemize

@c If the @samp{-L} option or the @samp{-H} option is used, 
@c the filenames used as arguments to @samp{-newer}, @samp{-anewer}, and
@c @samp{-cnewer} are dereferenced and the timestamp from the pointed-to
@c file is used instead (if possible -- otherwise the timestamp from the
@c symbolic link is used).
@c 
@samp{-L}オプションまたは@samp{-H}オプションが使用されている場合，
@samp{-newer}，@samp{-anewer}，そして@samp{-cnewer}の引数として使用され
ているファイル名は，リンク先を参照され，リンク先のタイムスタンプが代わ
りに使用されます(可能であれば -- そうでなければ，シンボリックリンクのタ
イムスタンプが使用されます)．

@deffn Test -lname pattern
@deffnx Test -ilname pattern
@c True if the file is a symbolic link whose contents match shell pattern
@c @var{pattern}.  For @samp{-ilname}, the match is case-insensitive.
@c @xref{Shell Pattern Matching}, for details about the @var{pattern}
@c argument.  If the @samp{-L} option is in effect, this test will always
@c fail for symbolic links unless they are broken.  So, to list any
@c symbolic links to @file{sysdep.c} in the current directory and its
@c subdirectories, you can do:
@c 
ファイルがシェルパターン@var{pattern}にマッチする内容のシンボリックリン
クの場合は真です．@samp{-ilname}は，大文字小文字を区別しないマッチです．
@var{pattern}引数の詳細は，@xref{Shell Pattern Matching}.  @samp{-L}の
効果がある場合，このテストはシンボリックリンクが壊れていない限り，常に
失敗します．そして，現在のディレクトリとそのサブディレクトリ内の，
@file{sysdep.c}へのシンボリックリンクをすべてリストアップするために，以
下のように実行します．

@example
find . -lname '*sysdep.c'
@end example
@end deffn

@node Hard Links
@c @subsection Hard Links
@subsection ハードリンク

@c Hard links allow more than one name to refer to the same file.  To
@c find all the names which refer to the same file as NAME, use
@c @samp{-samefile NAME}.  If you are not using the @samp{-L} option, you
@c can confine your search to one filesystem using the @samp{-xdev}
@c option.  This is useful because hard links cannot point outside a
@c single filesystem, so this can cut down on needless searching.
@c 
ハードリンクは，同じファイルを参照する一つ以上の名前を提供します．同じ
ファイルを参照している全てのファイルを@var{NAME}で見つけるため，
@samp{-samefile NAME}を使用してください．@samp{-L}オプションを使用して
いない場合，@samp{-xdev}オプションを使用して，検索を一つのファイルシス
テムに制限することが可能です．ハードリンクは単一のファイルシステム以外
を指し示すことができないため，不必要な検索を停止することができるので，
これは役に立ちます．

@c If the @samp{-L} option is in effect, and NAME is in fact a symbolic
@c link, the symbolic link will be dereferenced.  Hence you are searching
@c for other links (hard or symbolic) to the file pointed to by NAME.  If
@c @samp{-L} is in effect but NAME is not itself a symbolic link, other
@c symbolic links to the file NAME will be matched.
@c 
@samp{-L}オプションの効果があり，@var{NAME}が実際にはシンボリックリンク
の場合，シンボリックリンクの参照先を参照します．このため，@var{NAME}が
示すファイル以外のリンク(ハードリンクまたはシンボリックリンク)を検索し
ます．@samp{-L}の効果があり，@var{NAME}がシンボリックリンクではない場合，
ファイル@var{NAME}へのシンボリックリンクがマッチします．

@c You can also search for files by inode number.  This can occasionally
@c be useful in diagnosing problems with filesystems for example, because
@c @code{fsck} tends to print inode numbers.  Inode numbers also
@c occasionally turn up in log messages for some types of software, and
@c are used to support the @code{ftok()} library function.
@c 
inode番号でファイルを検索することも可能です．例えば，ファイルシステムの
問題を診断するとき，@code{fsck}がinode番号を出力するので，これは役に立
ちます．inode番号は，ソフトウエアのログメッセージの形式で出力されること
もあり，@code{ftok()}ライブラリ関数のサポートで使用されています．

@c You can learn a file's inode number and the number of links to it by
@c running @samp{ls -li} or @samp{find -ls}.  
@c 
ファイルのinode番号とリンク数を@samp{ls -li}や@samp{find -ls}で知ること
が可能です．

@c You can search for hard links to inode number NUM by using @samp{-inum
@c NUM}. If there are any file system mount points below the directory
@c where you are starting the search, use the @samp{-xdev} option unless
@c you are also using the @samp{-L} option.  Using @samp{-xdev} this
@c saves needless searching, since hard links to a file must be on the
@c same filesystem.  @xref{Filesystems}.
@c 
inode番号@var{NUM}へのハードリンクを@samp{-inum NUM}で検索することが可
能です．検索を開始したディレクトリ以下に，ファイルシステムのマウントポ
イントがある場合，@samp{-L}オプションを使用していない場合は
@samp{-xdev}オプションを使用してください．ハードリンク差機のファイルは
同じファイルシステムであることが必要なので，@samp{-xdev}を使用すること
で不必要な検索といった無駄を省きます．

@deffn Test -samefile NAME
@c File is a hard link to the same inode as NAME.  If the @samp{-L}
@c option is in effect, symbolic links to the same file as NAME points to
@c are also matched.
@c 
@var{NAME}と同じinodeを持つファイルの調査です．@samp{-L}オプションに効
果がある場合，同一ファイル@var{NAME}へのシンボリックリンクもマッチしま
す．
@end deffn

@deffn Test -inum n
@c File has inode number @var{n}.  The @samp{+} and @samp{-} qualifiers
@c also work, though these are rarely useful.
@c 
inode番号@var{n}を持つファイルの調査．@samp{+}と@samp{-}の修飾辞も動作
するのですが，滅多に役に立ちません．
@end deffn

@c You can also search for files that have a certain number of links, with
@c @samp{-links}.  Directories normally have at least two hard links; their
@c @file{.} entry is the second one.  If they have subdirectories, each of
@c those also has a hard link called @file{..} to its parent directory.
@c The @file{.} and @file{..} directory entries are not normally searched
@c unless they are mentioned on the @code{find} command line.
@c 
@samp{-links}を用いると，特定の数のリンクを持つファイルを検索することも
可能です．ディレクトリは通常，少なくとも二つのハードリンクがあります．
それらの@file{.}エントリは二番目のものです．サブディレクトリがある場合，
それは個別に親ディレクトリを示す@file{..}と呼ばれるハードリンクもありま
す．通常，@file{.}と@file{..}のディレクトリエントリーは，@code{find}の
コマンドラインに書かれていない限り検索されません．

@deffn Test -links n
@c File has @var{n} hard links.
@c 
@var{n}個のハードリンクを持つファイルの調査．
@end deffn

@deffn Test -links +n
@c File has more than @var{n} hard links.
@c 
@var{n}個の以上のハードリンクを持つファイルの調査．
@end deffn

@deffn Test -links -n
@c File has fewer than @var{n} hard links.
@c 
@var{n}個未満ののハードリンクを持つファイルの調査．
@end deffn

@node Time
@c @section Time
@section 時間

@c Each file has three time stamps, which record the last time that certain
@c operations were performed on the file:
@c 
それぞれのファイルには三つのタイムスタンプがあり，それらはファイルに対
して特定の処理を実行した，最後の時間を記録します．

@enumerate
@item
@c access (read the file's contents)
@c 
アクセス(ファイルの内容を読み込む)
@item
@c change the status (modify the file or its attributes)
@c 
ステータスの変更(ファイルの編集や属性の変更)
@item
@c modify (change the file's contents)
@c 
編集(ファイルの内容を変更)
@end enumerate

@c There is no timestamp that indicates when a file was @emph{created}.
@c 
ファイルが@emph{作成された}時間を示すタイムスタンプはありません．

@c You can search for files whose time stamps are within a certain age
@c range, or compare them to other time stamps.  
@c 
タイムスタンプが特定の範囲にあるファイルを検索したり，他のタイムスタン
プと比較したりすることが可能です．

@menu
* Age Ranges::
* Comparing Timestamps::
@end menu

@node Age Ranges
@c @subsection Age Ranges
@subsection 期間の範囲

@c These tests are mainly useful with ranges (@samp{+@var{n}} and
@c @samp{-@var{n}}).
@c 
これらのテストは，範囲(@samp{+@var{n}}と@samp{-@var{n}})を用いる場合に，
主に役立ちます．

@deffn Test -atime n
@deffnx Test -ctime n
@deffnx Test -mtime n
@c True if the file was last accessed (or its status changed, or it was
@c modified) @var{n}*24 hours ago.  The number of 24-hour periods since
@c the file's timestamp is always rounded down; therefore 0 means ``less
@c than 24 hours ago'', 1 means ``between 24 and 48 hours ago'', and so
@c forth.
@c 
ファイルの最後のアクセス(またはステータスの変更，または編集)が，
@var{n}*24時間前の場合は真です．24時間の数の区切りは，ファイルのタイム
スタンプが常に切り捨てで処理されます．このため，0は``24時間未満''，1は
``24〜48時間の間''といった感じになります．
@end deffn

@deffn Test -amin n
@deffnx Test -cmin n
@deffnx Test -mmin n
@c True if the file was last accessed (or its status changed, or it was
@c modified) @var{n} minutes ago.  These tests provide finer granularity of
@c measurement than @samp{-atime} et al., but rounding is done in a 
@c similar way.  For example, to list files in
@c @file{/u/bill} that were last read from 2 to 6 minutes ago:
@c 
ファイルの最後のアクセス(またはステータスの変更，または編集)が，
@var{n}分前の場合は真です．これらのテストは，@samp{-atime}等よりも細か
な計測を提供しますが，同じ方法で切り捨てられます．例えば，
@file{/u/bill}内の最後に読み込まれたのが2〜6分前のファイルをリストアッ
プするために以下のようにします．

@example
find /u/bill -amin +2 -amin -6
@end example
@end deffn

@deffn Option -daystart
@c Measure times from the beginning of today rather than from 24 hours ago.
@c So, to list the regular files in your home directory that were modified
@c yesterday, do
@c 
24時間前ではなく今日の最初から時間をはかります．そのため，ホームディレ
クトリ内で昨日編集された通常のファイルをリストアップするために，以下の
ようにします．

@example
find ~ -daystart -type f -mtime 1
@end example
@end deffn

@c The @samp{-daystart} option is unlike most other options in that it
@c has an effect on the way that other tests are performed.  The affected
@c tests are @samp{-amin}, @samp{-cmin}, @samp{-mmin}, @samp{-atime},
@c @samp{-ctime} and @samp{-mtime}.
@c 
@samp{-daystart}オプションは，それ以外のオプションとは異なり，他の調査
の実行に効果を与える方法です．影響される調査は，@samp{-amin}，
@samp{-cmin}，@samp{-mmin}，@samp{-atime}，@samp{-ctime}，そして
@samp{-mtime}です．

@node Comparing Timestamps
@c @subsection Comparing Timestamps
@subsection タイムスタンプの比較

@c As an alternative to comparing timestamps to the current time, you can
@c compare them to another file's timestamp.  That file's timestamp could
@c be updated by another program when some event occurs.  Or you could set
@c it to a particular fixed date using the @code{touch} command.  For
@c example, to list files in @file{/usr} modified after February 1 of the
@c current year:
@c 
タイムスタンプを現在の時間と比較する代わりに，それを他のファイルのタイ
ムスタンプと比較することが可能です．そのファイルのタイムスタンプは，い
くつかのイベントによって，他のプログラムによって更新されるかもしれませ
ん．また，@code{touch}コマンドを使用して，特定の固定した日付に設定する
こともできるでしょう．例えば，今年の一月一日以降に編集された
@file{/usr}内のファイルをリストアップするために，以下のようにします．

@c Idea from Rick Sladkey.
@example
touch -t 02010000 /tmp/stamp$$
find /usr -newer /tmp/stamp$$
rm -f /tmp/stamp$$
@end example

@deffn Test -anewer file
@deffnx Test -cnewer file
@deffnx Test -newer file
@c True if the file was last accessed (or its status changed, or it was
@c modified) more recently than @var{file} was modified.  These tests are
@c affected by @samp{-follow} only if @samp{-follow} comes before them on
@c the command line.  @xref{Symbolic Links}, for more information on
@c @samp{-follow}.  As an example, to list any files modified since
@c @file{/bin/sh} was last modified:
@c 
ファイルが最後にアクセス(またはステータスの変更，または編集)されたのが
@var{file}の編集以降の場合は真です．これらのテストは，@samp{-follow}が
コマンドラインのそれら(のオプション)の前にある場合のみ，@samp{-follow}
影響を受けます．

@example
find . -newer /bin/sh
@end example
@end deffn

@deffn Test -used n
@c True if the file was last accessed @var{n} days after its status was
@c last changed.  Useful for finding files that are not being used, and
@c could perhaps be archived or removed to save disk space.
@c 
ファイルが最後にアクセスされたのが，そのステータスが最後に変更されてか
ら@var{n}日後の場合は真です．使用されておらず，ディスクスペースを確保す
るために圧縮または削除されたファイルを探すのに役立ちます．
@end deffn

@node Size
@c @section Size
@section サイズ

@deffn Test -size n@r{[}bckwMG@r{]}
@c True if the file uses @var{n} units of space, rounding up.  The units
@c are 512-byte blocks by default, but they can be changed by adding a
@c one-character suffix to @var{n}:
@c 
切上げで@var{n}単位領域をファイルが使用している場合は真です．単位はデフォ
ルトで512バイトブロックですが，@var{n}の接尾子として一文字加えることで
変更することが可能です．

@table @code
@item b
@c 512-byte blocks (never 1024)
@c 
512バイトブロック単位(1024にはなりません)
@item c
@c bytes
@c 
バイト単位
@item k
@c kilobytes (1024 bytes)
@c 
キロバイト(1024バイト)単位
@item w
@c 2-byte words
@c 
2バイトワード単位
@item M
@c Megabytes
@c 
メガバイト単位
@item G
@c Gigabytes
@c 
ギガバイト単位
@end table

@c The `b' suffix always considers blocks to be 512 bytes.  This is not
@c affected by the setting (or non-setting) of the POSIXLY_CORRECT
@c environment variable.  This behaviour is different to the behaviour of
@c the @samp{-ls} action).  If you want to use 1024-byte units, use the
@c `k' suffix instead.
@c 
`b'の接尾辞は常に512バイトのブロックを想定します．これは，
@env{POSIXLY_CORRECT}環境変数の設定(または未設定)に影響されません．この
の動作は@samp{-ls}の動作とは異なります．1024バイト単位を使用したい場合，
`k'接尾辞を代わりに使用してください．

@c The number can be prefixed with a `+' or a `-'.  A plus sign indicates
@c that the test should succeed if the file uses at least @var{n} units
@c of storage (this is the way I normally use this test) and a minus sign
@c indicates that the test should succeed if the file uses less than
@c @var{n} units of storage.   There is no `=' prefix, because that's the 
@c default anyway.  
@c 
数字には`+'や`-'を前置することが可能です．正の符号は，ストレージ内でファ
イルが少なくとも@var{n}単位を使用している場合，調査が成功したことを示し
(これは，このテストが使用する一般的な方法です)，負の符号は，ストレージ
内でファイルが@var{n}単位未満使用している場合，調査が成功したことを示し
ます．`='接頭辞は無く，これはデフォルトだからです．

@c The size does not count indirect blocks, but it does count blocks in
@c sparse files that are not actually allocated.  In other words, it's
@c consistent with the result you get for @samp{ls -l} or @samp{wc -c}.
@c This handling of sparse files differs from the output of the @samp{%k}
@c and @samp{%b} format specifiers for the @samp{-printf} predicate.
@c 
サイズは間接的なブロックを数えませんが，実際には割り当てられていない疎
らなファイル内のブロックは数えます．言い替えると，@samp{ls -l}や
@samp{wc -c}で得られる結果と矛盾します．この疎らなファイルの処理は，
@samp{-printf}指示語の@samp{%k}と@samp{%b}の書式指定の出力とは異なりま
す．
@end deffn

@deffn Test -empty
@c True if the file is empty and is either a regular file or a directory.
@c This might make it a good candidate for deletion.  This test is useful
@c with @samp{-depth} (@pxref{Directories}) and @samp{-delete}
@c (@pxref{Single File}).
@c 
ファイルが空の場合で，通常のファイルまたはディレクトリのどちらかの場合
は真です．これで，削除に適した候補が作成されるでしょう．このテストは，
@samp{-depth} (@pxref{Directories})と@samp{-delete} (@pxref{Single
File})とともに用いた場合，役に立ちます．
@end deffn

@node Type
@c @section Type
@section ファイル形式

@deffn Test -type c
@c True if the file is of type @var{c}:
@c 
ファイルが@var{c}の形式の場合は真です．

@table @code
@item b
@c block (buffered) special
@c 
(バッファされる)ブロックスペシャルファイル
@item c
@c character (unbuffered) special
@c 
(バッファされない)キャラクタスペシャルファイル
@item d
@c directory
@c 
ディレクトリ
@item p
@c named pipe (FIFO)
@c 
名前付きパイプ(FIFO)
@item f
@c regular file
@c 
通常のファイル
@item l
@c symbolic link
@c 
シンボリックリンク
@item s
@c socket
@c 
ソケット
@item D
door (Solaris)
@end table
@end deffn

@deffn Test -xtype c
@c The same as @samp{-type} unless the file is a symbolic link.  For
@c symbolic links: if @samp{-follow} has not been given, true if the file
@c is a link to a file of type @var{c}; if @samp{-follow} has been given,
@c true if @var{c} is @samp{l}.  In other words, for symbolic links,
@c @samp{-xtype} checks the type of the file that @samp{-type} does not
@c check.  @xref{Symbolic Links}, for more information on @samp{-follow}.
@c 
ファイルがシンボリックリンクでない場合，@samp{-type}と同じです．シンボ
リックリンクに対しては以下のようになります．@samp{-follow}が与えられて
いない場合，ファイルが@var{c}形式のファイルにリンクしている場合は真です．
@samp{-follow}が与えられている場合，@var{c}が@samp{l}の場合は真です．言
い替えると，シンボリックリンクに対し，@samp{-xtype}は，@samp{-type}が調
査しないファイルの形式を調査します．@samp{-follow}の詳細は，
@xref{Symbolic Links}.
@end deffn

@node Owner
@c @section Owner
@section 所有者

@deffn Test -user uname
@deffnx Test -group gname
@c True if the file is owned by user @var{uname} (belongs to group @var{gname}).
@c A numeric ID is allowed.
@c 
ファイルが(グループ@var{gname}に所属する)ユーザ@var{uname}に所有されて
いる場合は真です．数字のIDも可能です．
@end deffn

@deffn Test -uid n
@deffnx Test -gid n
@c True if the file's numeric user ID (group ID) is @var{n}.  These tests
@c support ranges (@samp{+@var{n}} and @samp{-@var{n}}), unlike
@c @samp{-user} and @samp{-group}.
@c 
ファイルの数字のユーザID(グループID)が@var{n}の場合は真です．これらのテ
ストは，@samp{-user}と@samp{-group}とは異なり，範囲指定
(@samp{+@var{n}} と@samp{-@var{n}})をサポートします．
@end deffn

@deffn Test -nouser
@deffnx Test -nogroup
@c True if no user corresponds to the file's numeric user ID (no group
@c corresponds to the numeric group ID).  These cases usually mean that the
@c files belonged to users who have since been removed from the system.
@c You probably should change the ownership of such files to an existing
@c user or group, using the @code{chown} or @code{chgrp} program.
@c 
ファイルの数字のユーザIDに対応するユーザがいない(数字のグループIDに対応
するグループがない)場合は真です．これらの場合は，通常，システムから削除
されているため，ユーザに属さなくなったファイルを意味します．そのような
ファイルの所有権を，@code{chown}や@code{chgrp}プログラムを使用して，既
存のユーザとグループに変更したほうが良いでしょう．
@end deffn

@node Permissions
@c @section Permissions
@section ファイルの権限

@c @xref{File Permissions}, for information on how file permissions are
@c structured and how to specify them.
@c 
ファイルの権限の構造とそれを指定する方法に関する情報は，@xref{File
Permissions}.

@deffn Test -perm mode
@c True if the file's permissions are exactly @var{mode} (which can be
@c numeric or symbolic).
@c 
ファイルの権限が正確に@var{mode}(数値的でも象徴的でも可能です)と同一の
場合は真です．

@c If @var{mode} starts with @samp{-}, true if
@c @emph{all} of the permissions set in @var{mode} are set for the file;
@c permissions not set in @var{mode} are ignored.
@c If @var{mode} starts with @samp{/}, true if
@c @emph{any} of the permissions set in @var{mode} are set for the file;
@c permissions not set in @var{mode} are ignored.
@c This is a GNU extension.
@c 
@var{mode}が@samp{-}で始まっている場合，@var{mode}の権限が@emph{すべ
て}ファイルに設定されている場合は真です．@var{mode}に設定されていない権
限は無視されます．@var{mode}が@samp{/}で始まっている場合，@var{mode}の
権限が@emph{ひとつでも}ファイルに設定されている場合は真です．
@var{mode}に設定されていない権限は無視されます．これはGNUの拡張です．

@c If you don't use the @samp{/} or @samp{-} form with a symbolic mode
@c string, you may have to specify a rather complex mode string.  For
@c example @samp{-perm g=w} will only match files which have mode 0020
@c (that is, ones for which group write permission is the only permission
@c set).  It is more likely that you will want to use the @samp{/} or
@c @samp{-} forms, for example @samp{-perm -g=w}, which matches any file
@c with group write permission.
@c 
@samp{/}や@samp{-}の形式を記号的なモードの文字列で使用していない場合，
より複雑なモード文字列を指定する必要があるかもしれません．例えば，
@samp{-perm g=w}はモードが0020のファイルだけにマッチします(つまり，グルー
プの書き込み権限だけ権限が設定されているものです)．@samp{/}や@samp{-}の
形式のほうがより好ましい結果でしょう．例えば，@samp{-perm -g=w}は，グルー
プの書き込み権限がある，すべてのファイルにマッチします．

@table @samp
@item -perm 664
@c Match files which have read and write permission for their owner,
@c and group, but which the rest of the world can read but not write to.  
@c Files which meet these criteria but have other permissions bits set
@c (for example if someone can execute the file) will not be matched.
@c 
所有者とグループに読み込みと書き込みの権限があり，それ以外は読み込み可
能で書き込み不可能なファイルにマッチします．これらの基準に合致したファ
イルで，それ以外の権限のビットが設定されているもの(例えば，実行可能なファ
イル)にはマッチしません．

@item -perm -664
@c Match files which have read and write permission for their owner,
@c and group, but which the rest of the world can read but not write to,
@c without regard to the presence of any extra permission bits (for
@c example the executable bit).  This will match a file which has mode
@c 0777, for example.
@c 
所有者とグループに読み込みと書き込みの権限があり，それ以外は読み込み可
能で書き込み不可能なファイルにマッチし，それ以外の権限ビット(例えば，実
行権限ビット)の存在に依存しません．例えばこれは，0777のモードのファイル
にマッチします．

@item -perm /222
@c Match files which are writeable by somebody (their owner, or
@c their group, or anybody else).
@c 
書き込み権限があるファイル(所有者，グループ，またはそれ以外誰でも)にマッ
チします．

@item -perm /022
@c Match files which are writeable by either their owner or their
@c group.  The files don't have to be writeable by both the owner and
@c group to be matched; either will do.
@c 
所有者またはグループに書き込み権限があるファイルにマッチします．マッチ
するためには，ファイルに所有者とグループの両方の書き込み権限がある必要
はありません．いずれかでマッチします．

@item -perm /g+w,o+w
@c As above.
@c 
上記と同じです．

@item -perm /g=w,o=w
@c As above
@c 
上記と同じです．

@item -perm -022
@c Search for files which are writeable by both their owner and their
@c group.
@c 
所有者とグループの両方の書き込み権限があるファイルを検索します．

@item -perm -g+w,o+w
@c As above.
@c 
上記と同じです．
@end table
@end deffn

@node Contents
@c @section Contents
@section 内容

@c To search for files based on their contents, you can use the @code{grep}
@c program.  For example, to find out which C source files in the current
@c directory contain the string @samp{thing}, you can do:
@c 
ファイルの内容を基に検索するために，@code{grep}プログラムを使用すること
が可能です．例えば，現在のディレクトリで，文字列@samp{thing}を含むCのソー
スファイルを見つけるために，以下のようにすることが可能です．

@example
grep -l thing *.[ch]
@end example

@c If you also want to search for the string in files in subdirectories,
@c you can combine @code{grep} with @code{find} and @code{xargs}, like
@c this:
@c 
サブディレクトリのファイルの文字列を検索したい時も，以下のように
@code{find}と@code{xargs}を用いて，@code{grep}を組み合わせることが可能
です．

@example
find . -name '*.[ch]' | xargs grep -l thing
@end example

@c The @samp{-l} option causes @code{grep} to print only the names of files
@c that contain the string, rather than the lines that contain it.  The
@c string argument (@samp{thing}) is actually a regular expression, so it
@c can contain metacharacters.  This method can be refined a little by
@c using the @samp{-r} option to make @code{xargs} not run @code{grep} if
@c @code{find} produces no output, and using the @code{find} action
@c @samp{-print0} and the @code{xargs} option @samp{-0} to avoid
@c misinterpreting files whose names contain spaces:
@c 
@code{grep}は@samp{-l}オプションで，文字列を含む行ではなくそれを含むファ
イル名のみ出力します．文字列の引数(@samp{thing})は，実際には正規表現で，
そのためメタ文字を含みます．この方法で，@code{find}の出力がない場合は
@code{xargs}に@code{grep}を実行させないように，@samp{-r}オプションを使
用したり，名前にスペースを含んでいて間違って解釈することを防ぐために，
@code{find}のアクション@samp{-print0}と@code{xargs}のオプション
@samp{-0}を使用することで改善可能です．

@example
find . -name '*.[ch]' -print0 | xargs -r -0 grep -l thing
@end example

@c For a fuller treatment of finding files whose contents match a pattern,
@c see the manual page for @code{grep}.
@c 
パターンにマッチする内容があるファイルを見つけるためのより完全な扱いは，
@code{grep}のマニュアルページを参照して下さい．

@node Directories
@c @section Directories
@section ディレクトリ

@c Here is how to control which directories @code{find} searches, and how
@c it searches them.  These two options allow you to process a horizontal
@c slice of a directory tree.
@c 
ディレクトリでの@code{find}の検索を制御し，それらを検索する方法がここに
あります．これらの二つのオプションで，ディレクトリツリーを輪切りにする
処理が可能となります．

@deffn Option -maxdepth levels
@c Descend at most @var{levels} (a non-negative integer) levels of
@c directories below the command line arguments.  @samp{-maxdepth 0} means
@c only apply the tests and actions to the command line arguments.
@c 
コマンドライン引数以下の，最大@var{levels} (正の整数)のレベルのディレク
トリまで下ります．@samp{-maxdepth 0}はコマンドライン引数のみ，テストと
アクションを適用することを意味します．
@end deffn

@deffn Option -mindepth levels
@c Do not apply any tests or actions at levels less than @var{levels} (a
@c non-negative integer).  @samp{-mindepth 1} means process all files
@c except the command line arguments.
@c 
@var{levels} (正の整数)未満のレベルではテストもアクションも適用しません．
@samp{-mindepth 1}はコマンドライン引数以外のすべてのファイルを処理する
ことを意味します．
@end deffn

@deffn Option -depth
@c Process each directory's contents before the directory itself.  Doing
@c this is a good idea when producing lists of files to archive with
@c @code{cpio} or @code{tar}.  If a directory does not have write
@c permission for its owner, its contents can still be restored from the
@c archive since the directory's permissions are restored after its contents.
@c 
ディレクトリ自身の前に，それぞれのディレクトリの内容を処理します．
@code{cpio}や@code{tar}でファイルのリストを生成する時，これを行なうのは
良い考えです．ディレクトリにその所有者に対する書き込み権限がない場合，
ディレクトリの権限はその内容の後で復元されるため，その内容はアーカイブ
から復元することが可能です．
@end deffn

@deffn Option -d
@c This is a deprecated synonym for @samp{-depth}, for compatibility with
@c Mac OS X, FreeBSD and OpenBSD.   The @samp{-depth} option is a POSIX
@c feature, so it is better to use that.
@c 
これは，@samp{-depth}の推奨されない同意語で，Mac OS X，FreeBSD，そして
OpenBSDとの互換性が目的です．@samp{-depth}オプションはPOSIXの機能なので，
そちらを使用したほうが良いでしょう．
@end deffn

@deffn Action -prune
@c If the file is a directory, do not descend into it.  The result is
@c true.  For example, to skip the directory @file{src/emacs} and all
@c files and directories under it, and print the names of the other files
@c found:
@c 
ファイルがディレクトリの場合，その中まで下って行きません．結果は真です．
例えば，ディレクトリ@file{src/emacs}と，そのすべてのファイルと，それ以
下のディレクトリを省略し，それ以外で見つかったファイルの名前を出力する
ために以下のようにします．

@example
find . -wholename './src/emacs' -prune -o -print
@end example

@c The above command will not print @file{./src/emacs} among its list of
@c results.  This however is not due to the effect of the @samp{-prune}
@c action (which only prevents further descent, it doesn't make sure we
@c ignore that item).  Instead, this effect is due to the use of
@c @samp{-o}.  Since the left hand side of the ``or'' condition has
@c succeeded for @file{./src/emacs}, it is not necessary to evaluate the
@c right-hand-side (@samp{-print}) at all for this particular file.  If
@c you wanted to print that directory name you could use either an extra
@c @samp{-print} action:
@c 
上記のコマンドでは，結果リストに@file{./src/emacs}を出力しません．しか
し，これは@samp{-prune}の動作の影響が原因ではありません(それ以上，下っ
て行くのを避けるだけで，その項目を確実に無視するわけではありません)．そ
うではなく，これは@samp{-o}を使用していることが原因です．左側の``or''条
件が@file{./src/emacs}で成功しているので，この指定しているファイルに対
する右側の評価(@samp{-print})が不要になります．ディレクトリ名を出力した
い場合，さらに@samp{-print}アクションを使用します．

@example
find . -wholename './src/emacs' -prune -print -o -print
@end example

@c or use the comma operator:
@c 
または，カンマ・オペレータを使用します．

@example
find . -wholename './src/emacs' -prune , -print
@end example

@c If the @samp{-depth} option is in effect, the subdirectories will have
@c already been visited in any case.  Hence @samp{-prune} has no effect
@c and returns false.
@c 
@samp{-depth}オプションの影響がある場合，サブディレクトリはあらゆる状況
で調査されています．このため，@samp{-prune}に効果はありません．
@end deffn


@deffn Action -quit
@c Exit immediately (with return value zero if no errors have occurred).
@c No child processes will be left running, but no more paths specified
@c on the command line will be processed.  For example, @code{find
@c /tmp/foo /tmp/bar -print -quit} will print only @samp{/tmp/foo}.
@c 
すぐに修了します(エラーが無ければ，ゼロの値を返します)．実行中の子プロ
セスは無く，コマンドラインで指定されたパスの処理も無い状態になります．
例えば，@code{find /tmp/foo /tmp/bar -print -quit}では@samp{/tmp/foo}だ
けを出力します．
@end deffn 

@deffn Option -noleaf
@c Do not optimize by assuming that directories contain 2 fewer
@c subdirectories than their hard link count.  This option is needed when
@c searching filesystems that do not follow the Unix directory-link
@c convention, such as CD-ROM or MS-DOS filesystems or AFS volume mount
@c points.  Each directory on a normal Unix filesystem has at least 2 hard
@c links: its name and its @file{.}  entry.  Additionally, its
@c subdirectories (if any) each have a @file{..}  entry linked to that
@c directory.  When @code{find} is examining a directory, after it has
@c statted 2 fewer subdirectories than the directory's link count, it knows
@c that the rest of the entries in the directory are non-directories
@c (@dfn{leaf} files in the directory tree).  If only the files' names need
@c to be examined, there is no need to stat them; this gives a significant
@c increase in search speed.
@c 
ディレクトリが，ハードリンクの数より二つ少ないサブディレクトリを含むこ
とを仮定することで，最適化を行ないません．このオプションは，CD-ROMや
MS-DOSファイルシステムやAFSボリュームマウントポイントといった，Unixのディ
レクトリリンクの規約に従わないファイルシステムを検索する時に必要です．
通常のUnix のファイルシステムのそれぞれのディレクトリは，少なくとも二つ
のハードリンクがあります．その名前とその@file{.}エントリです．更に，そ
のサブディレクトリ(が存在する場合)には，そのディレクトリにリンクしてい
る@file{..}エントリが，それぞれにあります．@code{find}がディレクトリを
調査している時，ディレクトリのリンク数よりサブディレクトリが二つ少ない
ことがはっきりした後で，それはディレクトリのエントリの残りがディレクト
リでない(ディレクトリ内の@dfn{leaf}ツリー)ことが分かります．ファイルの
名前のみ調査に必要な場合は，それらをはっきりさせる必要はありません．こ
れで検索スピードが飛躍的に増加します．
@end deffn

@deffn Option -ignore_readdir_race
@c If a file disappears after its name has been read from a directory but
@c before @code{find} gets around to examining the file with @code{stat},
@c don't issue an error message.  If you don't specify this option, an
@c error message will be issued.  This option can be useful in system
@c scripts (cron scripts, for example) that examine areas of the
@c filesystem that change frequently (mail queues, temporary directories,
@c and so forth), because this scenario is common for those sorts of
@c directories.  Completely silencing error messages from @code{find} is
@c undesirable, so this option neatly solves the problem.  There is no
@c way to search one part of the filesystem with this option on and part
@c of it with this option off, though.
@c 
ディレクトリから読み込まれた名前のファイルが，@code{find}が@code{stat}
でファイルを調査する前に見つからない場合，エラーメッセージを出力しませ
ん．このオプションを指定していない場合，エラーメッセージが出力されます．
頻繁に変更されるファイルシステム領域(メールのキュー，テンポラリ・ディレ
クトリ等)を調査するシステムスクリプト(例えばcronスクリプト)では，このオ
プションは役に立ち，その理由は，このような種類のディレクトリではよくあ
ることだからです．@code{find}からのエラーメッセージを完全に無くすことは
望まないので，このオプションは，うまく問題を解決します．しかし，ファイ
ルシステムの一部はこのオプションをオンにし，一部ではこのオプションをオ
フにして検索する方法はありません．
@end deffn

@deffn Option -noignore_readdir_race
@c This option reverses the effect of the @samp{-ignore_readdir_race} option.
@c 
このオプションは，@samp{-ignore_readdir_race}オプションの効果を反転しま
す．
@end deffn


@node Filesystems
@c @section Filesystems
@section ファイルシステム

@c A @dfn{filesystem} is a section of a disk, either on the local host or
@c mounted from a remote host over a network.  Searching network
@c filesystems can be slow, so it is common to make @code{find} avoid them.
@c 
@dfn{ファイルシステム(filesystem)}とはディスクの区分のことで，それはロー
カルホスト，または，ネットワーク経由のリモートホストからマウントしたも
ののいずれかになります．ネットワークファイルシステムを検索すると遅くな
るはずなので，通常，@code{find}はそれを避けます．

@c There are two ways to avoid searching certain filesystems.  One way is
@c to tell @code{find} to only search one filesystem:
@c 
特定のファイルシステムの検索を避ける二つの方法があります．一つの方法は，
@code{find}に一つのファイルシステムのみを検索するよう伝えることです．

@deffn Option -xdev
@deffnx Option -mount
@c Don't descend directories on other filesystems.  These options are synonyms.
@c 
他のファイルシステムのディレクトリに下りません．これらのオプションは同
じです．
@end deffn

@c The other way is to check the type of filesystem each file is on, and
@c not descend directories that are on undesirable filesystem types:
@c 
もう一つの方法は，それぞれのファイルがあるファイルシステムの形式を調査
し，好ましくないファイルシステムの形式にあるディレクトリに下らないよう
にします．

@deffn Test -fstype type
@c True if the file is on a filesystem of type @var{type}.  The valid
@c filesystem types vary among different versions of Unix; an incomplete
@c list of filesystem types that are accepted on some version of Unix or
@c another is:
@c 
ファイルが，形式@var{type}のファイルシステム上にある場合は真です．有効
なファイルシステム形式は，Unixの異なるバージョン間で異なります．いくつ
かのバージョンのUnixなどが受け入れる，ファイルシステムの形式の不完全な
リストは，以下のとおりです．
@example
ext2 ext3 proc sysfs ufs 4.2 4.3 nfs tmp mfs S51K S52K
@end example
@c You can use @samp{-printf} with the @samp{%F} directive to see the types
@c of your filesystems.  The @samp{%D} directive shows the device number.
@c @xref{Print File Information}.  @samp{-fstype} is
@c usually used with @samp{-prune} to avoid searching remote filesystems
@c (@pxref{Directories}). 
@c 
ファイルシステムの形式を知るために，@samp{%F}指示語とともに
@samp{-printf}を使用することが可能です．@samp{%D}指示語はデバイス番号を
表示します．@xref{Print File Information}.  リモートファイルシステムの
検索を避けるために，@samp{-fstype}は通常，@samp{-prune}とともに使用され
ます．(@pxref{Directories}).
@end deffn

@node Combining Primaries With Operators
@c @section Combining Primaries With Operators
@section オペレータの主なものを組み合わせる

@c Operators build a complex expression from tests and actions.
@c The operators are, in order of decreasing precedence:
@c 
オペレータはテストとアクションから，複雑な表現を構築します．オペレータ
は優先順位が下がる順序で，以下のものがあります．

@table @code
@item @asis{( @var{expr} )}
@findex ()
@c Force precedence.  True if @var{expr} is true.
@c 
優先順位をあげます．@var{expr}が真の場合は真です．

@item @asis{! @var{expr}}
@itemx @asis{-not @var{expr}}
@findex !
@findex -not
@c True if @var{expr} is false.
@c 
@var{expr}が偽の場合は真です．

@item @asis{@var{expr1 expr2}}
@itemx @asis{@var{expr1} -a @var{expr2}}
@itemx @asis{@var{expr1} -and @var{expr2}}
@findex -a
@findex -and
@c And; @var{expr2} is not evaluated if @var{expr1} is false.
@c 
And(論理積)です．@var{expr1}が偽の場合，@var{expr2}は評価されません．

@item @asis{@var{expr1} -o @var{expr2}}
@itemx @asis{@var{expr1} -or @var{expr2}}
@findex -o
@findex -or
@c Or; @var{expr2} is not evaluated if @var{expr1} is true.
@c 
Or(論理和)です．@var{expr1}が真の場合，@var{expr2}は評価されません．

@item @asis{@var{expr1} , @var{expr2}}
@findex ,
@c List; both @var{expr1} and @var{expr2} are always evaluated.  True if
@c @var{expr2} is true.  The value of @var{expr1} is discarded.  This
@c operator lets you do multiple independent operations on one traversal,
@c without depending on whether other operations succeeded.  The two 
@c operations @var{expr1} and @var{expr2} are not always fully
@c independent, since @var{expr1} might have side effects like touching
@c or deleting files, or it might use @samp{-prune} which would also
@c affect @var{expr2}.
@c 
リストです．@var{expr1}と@var{expr2}は，常に評価されます．@var{expr2}が
真の場合は真です．@var{expr1}の値は放棄されます．このオペレータで，一回
の処理で，他の処理が成功したかどうかに依存せず，複数の独立した処理を行
なうことができます．二つの処理@var{expr1}と@var{expr2}は，常に完全に独
立というわけではなく，それは@var{expr1}にファイルを編修したり削除したり
する副作用がある可能性があり，また，@var{expr2}に影響する@samp{-prune}
を使用している可能性もあるためです．
@end table

@c @code{find} searches the directory tree rooted at each file name by
@c evaluating the expression from left to right, according to the rules of
@c precedence, until the outcome is known (the left hand side is false for
@c @samp{-and}, true for @samp{-or}), at which point @code{find} moves on
@c to the next file name.
@c 
@code{find}は，右から左まで式を評価しながら，それぞれのファイル名を起点
としたディレクトリツリーを，優先順位の規則に従い，(@samp{-and}に対して
は左が偽，@samp{-or}に対しては真となる)結果が分かるまで検索し，そして，
@code{find}は次のファイル名へ移動します．

@c There are two other tests that can be useful in complex expressions:
@c 
複雑な表現で役に立つ，二つのテストが他にあります．

@deffn Test -true
@c Always true.
@c 
常に真です．
@end deffn

@deffn Test -false
@c Always false.
@c 
常に偽です．
@end deffn

@node Actions, Common Tasks, Finding Files, Top
@c @chapter Actions
@chapter アクション

@c There are several ways you can print information about the files that
@c match the criteria you gave in the @code{find} expression.  You can
@c print the information either to the standard output or to a file that
@c you name.  You can also execute commands that have the file names as
@c arguments.  You can use those commands as further filters to select files.
@c 
@code{find}の式で与えた基準にマッチするファイルの情報を出力する方法が，
いくつかあります．標準出力または指名したファイルに，情報を出力すること
が可能です．ファイル名を引数として，コマンドを実行することも可能です．
これらのコマンドを，選択したファイルへのフィルター以外の目的で使用する
ことが可能です．

@menu
* Print File Name::
* Print File Information::
* Run Commands::
* Delete Files::
* Adding Tests::
@end menu

@node Print File Name
@c @section Print File Name
@section ファイル名の出力

@deffn Action -print
@c True; print the full file name on the standard output, followed by a
@c newline.
@c 
真の時，完全なファイル名を標準出力に出力し，改行を追加します．
@end deffn

@deffn Action -fprint file
@c True; print the full file name into file @var{file}, followed by a
@c newline.  If @var{file} does not exist when @code{find} is run, it is
@c created; if it does exist, it is truncated to 0 bytes.  The file names
@c @file{/dev/stdout} and @file{/dev/stderr} are handled specially; they
@c refer to the standard output and standard error output, respectively.
@c 
真の時，完全なファイル名をファイル@var{file}に出力し，改行を追加します．
@code{find}の実行時に@var{file}が存在しない場合は作成されます．存在する
場合は0バイトに切り詰められます．ファイル名@file{/dev/stdout}と
@file{/dev/stderr}は，特別な扱いをされます．それらはそれぞれ，標準出力
と標準エラー出力を参照します．
@end deffn

@node Print File Information
@c @section Print File Information
@section ファイル情報の出力

@deffn Action -ls
@c True; list the current file in @samp{ls -dils} format on the standard
@c output.  The output looks like this:
@c 
真の時，現在のファイルを@samp{ls -dils}の書式で標準出力にリストアップし
ます．出力は以下のようになります．

@smallexample
204744   17 -rw-r--r--   1 djm      staff       17337 Nov  2  1992 ./lwall-quotes
@end smallexample

@c The fields are:
@c 
フィールドは以下のとおりです．

@enumerate
@item
@c The inode number of the file.  @xref{Hard Links}, for how to find files
@c based on their inode number.
@c 
ファイルのinodeナンバーです．inodeナンバーを元にしたファイルの検索方法
は，@xref{Hard Links}.

@item
@c the number of blocks in the file.  The block counts are of 1K blocks,
@c unless the environment variable @code{POSIXLY_CORRECT} is set, in which
@c case 512-byte blocks are used.  @xref{Size}, for how to find files based
@c on their size.
@c 
ファイルのブロック数です．ブロック計算は，512バイトブロック単位を使用す
る環境変数@code{POSIXLY_CORRECT}が設定されていない場合，1Kブロック単位
です．サイズを元にしたファイルの検索方法は，@xref{Size}.

@item
@c The file's type and permissions.  The type is shown as a dash for a
@c regular file; for other file types, a letter like for @samp{-type} is
@c used (@pxref{Type}).  The permissions are read, write, and execute for
@c the file's owner, its group, and other users, respectively; a dash means
@c the permission is not granted.  @xref{File Permissions}, for more details
@c about file permissions.  @xref{Permissions}, for how to find files based
@c on their permissions.
@c 
ファイルの形式と権限です．形式は，通常のファイルに対してはダッシュで表
示されます．それ以外のファイル形式に対しては，@samp{-type}に対して使用
される文字です(@pxref{Type})．権限は，読み込み，書き込み，そして実行で，
それぞれファイルの所有者，そのグループ，そしてその他のユーザに対するも
のです．ダッシュは権限が与えられていないことを意味します．ファイルの権
限の詳細は，@xref{File Permissions}.  その権限を元にしたファイルの検索
方法は，@xref{Permissions}.

@item
@c The number of hard links to the file.
@c 
ファイルに対するハードリンクの数です．

@item
@c The user who owns the file.
@c 
ファイルを所有しているユーザです．

@item
@c The file's group.
@c 
ファイルのグループです．

@item
@c The file's size in bytes.
@c 
ファイルのバイト単位のサイズです．

@item
@c The date the file was last modified.
@c 
ファイルが最後に編集された日付です．

@item
@c The file's name.  @samp{-ls} quotes non-printable characters in the file
@c names using C-like backslash escapes.  
@c This may change soon, as the treatment of unprintable characters is
@c harmonised for @samp{-ls}, @samp{-fls}, @samp{-print}, @samp{-fprint},
@c @samp{-printf} and @samp{-fprintf}.
@c 
ファイル名です．@samp{-ls}は，ファイル名で使用されている出力不可能な文
字を，Cのようなバックスラッシュエスケープを使用して引用符で囲みます．印
字不可能な文字の扱いは@samp{-ls}，@samp{-fls}，@samp{-print}，
@samp{-fprint}，@samp{-printf}，そして@samp{-fprintf}では同じなので，こ
れは将来，変更される可能性があります．
@end enumerate
@end deffn

@deffn Action -fls file
@c True; like @samp{-ls} but write to @var{file} like @samp{-fprint}
@c (@pxref{Print File Name}).
@c 
真の時，@samp{-ls}に似ていますが，@samp{-fprint}のように@var{file}に書
き出します(@pxref{Print File Name})．
@end deffn

@deffn Action -printf format
@c True; print @var{format} on the standard output, interpreting @samp{\}
@c escapes and @samp{%} directives.  Field widths and precisions can be
@c specified as with the @code{printf} C function.  Format flags (like
@c @samp{#} for example) may not work as you expect because many of the
@c fields, even numeric ones, are printed with %s.  This means though
@c that the format flag @samp{-} will work; it forces left-alignment of
@c the field.  Unlike @samp{-print}, @samp{-printf} does not add a
@c newline at the end of the string.  If you want a newline at the end of
@c the string, add a @samp{\n}.
@c 
真の時，@samp{\}エスケープと@samp{%}指示語を解釈しながら，@var{format}
を標準出力に出力します．フィールドの幅と精度は，C関数の@code{printf}の
ように指定することが可能です．書式フラグ(例えば@samp{#})は，多くのフィー
ルドは@samp{%s}で出力されるので，数値的なものであっても期待したように動
作しません．これは，書式フラグ@samp{-}が動作することを意味します．それ
はフィールドを左寄せに強制します．@samp{-print}とは異なり，
@samp{-printf}は文字列の終わりに改行を追加しません．文字列の終わりを改
行にしたい場合，@samp{\n}を追加してください．
@end deffn

@deffn Action -fprintf file format
@c True; like @samp{-printf} but write to @var{file} like @samp{-fprint}
@c (@pxref{Print File Name}).
@c 
真の時，@samp{-printf}に似ていますが，@samp{-fprint}のように@var{file}
に書き出します(@pxref{Print File Name})．
@end deffn

@menu
* Escapes::
* Format Directives::
* Time Formats::
@end menu

@node Escapes
@c @subsection Escapes
@subsection エスケープ

@c The escapes that @samp{-printf} and @samp{-fprintf} recognize are:
@c 
@samp{-printf}と@samp{-fprintf}で認識されるエスケープは以下のとおりです．

@table @code
@item \a
@c Alarm bell.
@c 
アラームベル．
@item \b
@c Backspace.
@c 
バックスペース．
@item \c
@c Stop printing from this format immediately and flush the output.
@c 
この書式の直後出力の停止し，出力をフラッシュ．
@item \f
@c Form feed.
@c 
フォームフィード．
@item \n
@c Newline.
@c 
改行．
@item \r
@c Carriage return.
@c 
キャリッジリターン．
@item \t
@c Horizontal tab.
@c 
水平タブ．
@item \v
@c Vertical tab.
@c 
垂直タブ．
@item \\
@c A literal backslash (@samp{\}).
@c 
バックスラッシュそのもの(@samp{\})．
@item \NNN
@c The character whose ASCII code is NNN (octal).
@c 
ASCIIコードがNNNの文字(八進数)．
@end table
@c A @samp{\} character followed by any other character is treated as an
@c ordinary character, so they both are printed, and a warning message is
@c printed to the standard error output (because it was probably a typo).
@c 
@samp{\}文字に他の文字が続くものは，通常の文字として扱われるので，両方
が出力され，(おそらくそれは入力ミスなので)標準エラー出力に警告メッセー
ジが出力されます．

@node Format Directives
@c @subsection Format Directives
@subsection 書式指示語

@c @samp{-printf} and @samp{-fprintf} support the following format
@c directives to print information about the file being processed.  The C
@c @code{printf} function, field width and precision specifiers are
@c supported, as applied to string (%s) types. That is, you can specify
@c "minimum field width"."maximum field width" for each directive.
@c Format flags (like @samp{#} for example) may not work as you expect
@c because many of the fields, even numeric ones, are printed with %s.
@c The format flag @samp{-} does work; it forces left-alignment of the
@c field.
@c 
@samp{-printf}と@samp{-fprintf}は，処理しているファイルに関する情報を出
力するため，以下の書式指示語をサポートします．Cの@code{printf}関数での
フィールド幅と精度指定は，文字列(@samp{%s})の形式に適用するようにサポー
トされています．つまり，それぞれの指示語に対する"最小フィールド幅"."最
大フィールド幅"を指定することが可能です．書式フラグ(例えば@samp{#})は，
多くのフィールドは@samp{%s}で出力されるので，数値的なものであっても期待
したように動作しません．書式フラグ@samp{-}は動作することを意味します．
それはフィールドを左寄せに強制します．

@c @samp{%%} is a literal percent sign.  A @samp{%} character followed by
@c an unrecognised character (i.e. not a known directive or printf field
@c width and precision specifier), is discarded (but the unrecognised character
@c is printed), and a warning message is printed to the standard error output
@c (because it was probably a typo).
@c 
@samp{%%}はパーセント記号そのものです．認識できない文字が続く@samp{%}文
字(例えば，既知の指示語でも，@code{printf}のフィールド幅や精度指定でも
ないもの)は削除され(しかし，認識できない文字は出力されます)，(おそらく
入力ミスのため)標準出力に警告メッセージが出力されます．

@menu
* Name Directives::
* Ownership Directives::
* Size Directives::
* Location Directives::
* Time Directives::
* Formatting Flags::
@end menu

@node Name Directives
@c @subsubsection Name Directives
@subsubsection 名前指示語

@table @code
@item %p
@c supports %-X.Yp
@c 
@c File's name (not the absolute path name, but the name of the file as
@c it was encountered by find - that is, as a relative path from one of
@c the starting points).
@c 
ファイル名(絶対パスではなく，@code{find}が見つけたファイル名です - つま
り，開始点からの相対パスです)．
@item %f
@c File's name with any leading directories removed (only the last element).
@c 
前置されるディレクトリを削除したファイル名(最後の要素のみ)．
@c supports %-X.Yf
@item %h
@c Leading directories of file's name (all but the last element and the
@c slash before it).  If the file's name contains no slashes (for example
@c because it was named on the command line and is in the current working
@c directory), then ``%h'' expands to ``.''.  This prevents ``%h/%f''
@c expanding to ``/foo'', which would be surprising and probably not
@c desirable.
@c 
ファイル名に前置されるディレクトリ(最後の要素とその前のスラッシュ以外す
べて)．ファイル名にスラッシュが無い(例えば，コマンドラインで指名されて
いたり，現在のワーキング・ディレクトリにある)場合，@samp{%h}は@samp{.}
に展開されます．これは，@samp{%h/%f}を@samp{/foo}に展開することが，予想
外でおそらく要求されることでないので，そうすることを避けます．
@c supports %-X.Yh
@item %P
@c File's name with the name of the command line argument under which
@c it was found removed from the beginning.
@c 
ファイル名で，それが見つけられたコマンドライン引数の名前は，最初から削
除されます．
@c supports %-X.YP
@item %H
@c Command line argument under which file was found.
@c 
それによりファイルが見つけられた，コマンドライン引数．
@c supports %-X.YH
@end table

@node Ownership Directives
@c @subsubsection Ownership Directives
@subsubsection 所有者指示語

@table @code
@item %g
@c supports %-X.Yg
@c File's group name, or numeric group ID if the group has no name.
@c 
ファイルのグループ名，または名前が無い場合はグループID．
@item %G
@c supports %-X.Yg
@c TODO: Needs to support # flag and 0 flag
@c 
@c File's numeric group ID.
@c 
ファイルの数値的なグループID．
@item %u
@c supports %-X.Yu
@c File's user name, or numeric user ID if the user has no name.
@c 
ファイルのユーザ名，または名前が無い場合はユーザID．
@item %U
@c supports %-X.Yu
@c TODO: Needs to support # flag
@c 
@c File's numeric user ID.
@c 
ファイルの数値的なユーザID．
@item %m
@c full support, including # and 0.
@c File's permissions (in octal).   If you always want to have a leading
@c zero on the number, use the '#' format flag, for example '%#m'.
@c 
ファイルの権限(八進数)．数字の前に常にゼロを前置したい場合，例えば@samp{%#m}の
ように，@samp{#}書式フラグを使用してください．
@end table

@node Size Directives
@c @subsubsection Size Directives
@subsubsection サイズ指示語

@table @code
@item %k
@c The amount of disk space used for this file in 1K blocks. Since disk space is
@c allocated in multiples of the filesystem block size this is usually greater
@c than %s/1024, but it can also be smaller if the file is a sparse file (that is,
@c it has ``holes'').
@c 
このファイルが使用している1Kブロック単位でのディスク使用量．ディスク領
域はファイルシステムのブロックサイズの倍数を占有するので，これは通常
@samp{%s/1024}より大きくなりますが，ファイルが疎らなファイル(いわゆる
``穴''があるもの)の場合は小さくなるはずです．
@item %b
@c The amount of disk space used for this file in 512-byte blocks. Since disk
@c space is allocated in multiples of the filesystem block size this is usually
@c greater than %s/1024, but it can also be smaller if the file is a sparse file
@c (that is, it has ``holes'').
@c 
このファイルが使用している512バイトブロック単位でのディスク使用量．ディ
スク領域はファイルシステムのブロックサイズの倍数を占有するので，これは
通常@samp{%s/1024}より大きくなりますが，ファイルが疎らなファイル(いわゆ
る``穴''があるもの)の場合は小さくなるはずです．
@item %s
@c File's size in bytes.
@c 
バイト単位でのファイルサイズ．
@end table

@node Location Directives
@c @subsubsection Location Directives
@subsubsection 位置指示語

@table @code
@item %d
@c File's depth in the directory tree (depth below a file named on the
@c command line, not depth below the root directory).  Files named on the
@c command line have a depth of 0.  Subdirectories immediately below them
@c have a depth of 1, and so on.
@c 
ディレクトリツリーでのファイルの深さ(コマンドラインで指名されたファイル
からの深さで，ルートディレクトリからではありません)．コマンドラインのファ
イル名は，深さが0です．直下のサブディレクトリは1となり，そのように続い
ていきます．
@item %D
@c The device number on which the file exists (the @code{st_dev} field of
@c @code{struct stat}), in decimal.
@c 
ファイルが存在するデバイス番号(@code{struct stat}の@code{st_dev}フィー
ルド)で，十進数です．
@item %F
@c Type of the filesystem the file is on; this value can be used for
@c @samp{-fstype} (@pxref{Directories}).
@c 
ファイルが存在するファイルシステム．この値は，@samp{-fstype}で使用する
ものです(@pxref{Directories})．
@item %l
@c Object of symbolic link (empty string if file is not a symbolic link).
@c 
シンボリックリンクのオブジェクト(ファイルがシンボリックリンクでない場合
は空文字です．)
@item %i
@c File's inode number (in decimal).
@c 
ファイルのinode番号(十進数)．
@item %n
@c Number of hard links to file.
@c 
ファイルのハードリンクの数．
@item %y 
@c Type of the file as used with @samp{-type}.   If the file is a symbolic
@c link, @samp{l} will be printed.
@c 
@samp{-type}で使用されるファイルの形式．ファイルがシンボリックリンクの
場合，@samp{l}が出力されます．
@item %Y
@c Type of the file as used with @samp{-type}.   If the file is a symbolic
@c link, it is dereferenced.  If the file is a broken symbolic link,
@c @samp{N} is printed.
@c 
@samp{-type}で使用されるファイルの形式．ファイルがシンボリックリンクの
場合，リンクをたどります．ファイルが壊れているシンボリックリンクの場合，
@samp{N}が出力されます．
@end table

@node Time Directives
@c @subsubsection Time Directives
@subsubsection 時間指示語

@c Some of these directives use the C @code{ctime} function.  Its output
@c depends on the current locale, but it typically looks like
@c 
これらの指示語にはCの@code{ctime}関数を使用するものもあります．その出力
は現在のロカールに依存しますが，典型的なものは以下のようになります．

@example
Wed Nov  2 00:42:36 1994
@end example

@table @code
@item %a
@c File's last access time in the format returned by the C @code{ctime} function.
@c 
Cの@code{ctime}関数で返される書式での，ファイルが最後にアクセスされた時
間．
@item %A@var{k}
@c File's last access time in the format specified by @var{k}
@c (@pxref{Time Formats}). 
@c 
@var{k}で指定される書式での，ファイルが最後にアクセスされた時間
(@pxref{Time Formats})．
@item %c
@c File's last status change time in the format returned by the C @code{ctime}
@c function.
@c 
Cの@code{ctime}関数で返される書式での，ファイルのステータスが最後に変更
された時間．
@item %C@var{k}
@c File's last status change time in the format specified by @var{k}
@c (@pxref{Time Formats}).
@c 
@var{k}で指定される書式での，ファイルのステータスが最後に変更された時間
(@pxref{Time Formats})．
@item %t
@c File's last modification time in the format returned by the C @code{ctime}
@c function.
@c 
Cの@code{ctime}関数で返される書式での，ファイルが最後に編集された時間．
@item %T@var{k}
@c File's last modification time in the format specified by @var{k} 
@c (@pxref{Time Formats}). 
@c 
@var{k}で指定される書式での，ファイルが最後に編集された時間
(@pxref{Time Formats})．
@end table

@node Time Formats
@c @subsection Time Formats
@subsection 時間の書式

@c Below are the formats for the directives @samp{%A}, @samp{%C}, and
@c @samp{%T}, which print the file's timestamps.  Some of these formats
@c might not be available on all systems, due to differences in the C
@c @code{strftime} function between systems.
@c 
以下は，指示語@samp{%A}，@samp{%C}，そして@samp{%T}に対する書式で，それ
はファイルのタイムスタンプを出力します．これらの書式には，Cの
@code{strftime}関数のシステム間での違いにより，すべてのシステムで利用可
能でないものもあります．

@menu
* Time Components::
* Date Components::
* Combined Time Formats::
@end menu

@node Time Components
@c @subsubsection Time Components
@subsubsection 時間の内容

@c The following format directives print single components of the time.
@c 
以下の書式指示語は，時間の単一の内容を出力します．

@table @code
@item H
@c hour (00..23)
@c 
時間(00..23)
@item I
@c hour (01..12)
@c 
時間(01..12)
@item k
@c hour ( 0..23)
@c 
時間( 0..23)
@item l
@c hour ( 1..12)
@c 
時間( 1..12)
@item p
@c locale's AM or PM
@c 
ロカールの午前や午後
@item Z
@c time zone (e.g., EDT), or nothing if no time zone is determinable
@c 
タイムゾーン(例えば，EDT)，またはタイムゾーンが定義されていない場合は何
も出力しない．
@item M
@c minute (00..59)
@c 
分(00..59)
@item S
@c second (00..61)
@c 
秒(00..61)
@item @@
@c seconds since Jan. 1, 1970, 00:00 GMT.
@c 
1970年1月1日00:00 GMT以来の秒．
@end table

@node Date Components
@c @subsubsection Date Components
@subsubsection 日付の内容

@c The following format directives print single components of the date.
@c 
以下の書式指示語は，日付の単一の内容を出力します．

@table @code
@item a
@c locale's abbreviated weekday name (Sun..Sat)
@c 
ロカールの略記された曜日名(Sun..Sat)
@item A
@c locale's full weekday name, variable length (Sunday..Saturday)
@c 
ロカールの完全な曜日名，可変長(Sunday..Saturday)
@item b
@itemx h
@c locale's abbreviated month name (Jan..Dec)
@c 
ロカールの略記された月名(Jan..Dec)
@item B
@c locale's full month name, variable length (January..December)
@c 
ロカールの完全な月名，可変長(January..December)
@item m
@c month (01..12)
@c 
月(01..12)
@item d
@c day of month (01..31)
@c 
日(01..31)
@item w
@c day of week (0..6)
@c 
曜日(0..6)
@item j
@c day of year (001..366)
@c 
年間の日付(001..366)
@item U
@c week number of year with Sunday as first day of week (00..53)
@c 
日曜日を週の最初の日とした時の，年間の週数(00..53)
@item W
@c week number of year with Monday as first day of week (00..53)
@c 
月曜日を週の最初の日とした時の，年間の週数(00..53)
@item Y
@c year (1970@dots{})
@c 
年(1970@dots{})
@item y
@c last two digits of year (00..99)
@c 
年の最後の二桁(00..99)
@end table

@node Combined Time Formats
@c @subsubsection Combined Time Formats
@subsubsection 時間の書式の組み合わせ

@c The following format directives print combinations of time and date
@c components. 
@c 
以下の書式指示語は，時間と日付の組み合わせを出力します．

@table @code
@item r
@c time, 12-hour (hh:mm:ss [AP]M)
@c 
時間，12時間制(hh:mm:ss [AP]M)
@item T
@c time, 24-hour (hh:mm:ss)
@c 
時間，24時間制(hh:mm:ss)
@item X
@c locale's time representation (H:M:S)
@c 
ロカールの時間表現(H:M:S)
@item c
@c locale's date and time (Sat Nov 04 12:02:33 EST 1989)
@c 
ロカールの日付と時間(Sat Nov 04 12:02:33 EST 1989)
@item D
@c date (mm/dd/yy)
@c 
日付(mm/dd/yy)
@item x
@c locale's date representation (mm/dd/yy)
@c 
ロカールの日付表現(mm/dd/yy)
@item +
@c Date and time, separated by '+', for example `2004-04-28+22:22:05'.
@c The time is given in the current timezone (which may be affected by
@c setting the TZ environment variable).  This is a GNU extension.
@c 
日付と時間を@samp{+}で分離し，例えば@samp{2004-04-28+22:22:05}とします．
時間は，現在のタイムゾーンで与えられたものになります(TZ環境変数で設定さ
れたものに影響されるかもしれません)．これはGNUの拡張です．
@end table

@node Formatting Flags
@c @subsubsection Formatting Flags
@subsubsection 書式フラグ

@c The @samp{%m} and @samp{%d} directives support the @samp{#}, @samp{0}
@c and @samp{+} flags, but the other directives do not, even if they
@c print numbers.  Numeric directives that do not support these flags
@c include 
@c 
@samp{%m}と@samp{%d}指示語は，@samp{#}，@samp{0}，そして@samp{+}フラグ
をサポートしますが，それ以外の指示語は数値を出力するものでもサポートし
ません．これらのフラグをサポートしない数値の指示語には，以下のものが含
まれます．

@c @samp{G},
@c @samp{U},
@c @samp{b},
@c @samp{D},
@c @samp{k} and
@c @samp{n}.
@c 
@samp{G}，@samp{U}，@samp{b}，@samp{D}，@samp{k}，そして@samp{n}です．

@c All fields support the format flag @samp{-}, which makes fields
@c left-aligned.  That is, if the field width is greater than the actual
@c contents of the field, the requisite number of spaces are printed
@c after the field content instead of before it.
@c 
すべてのフィールドは書式化フラグ@samp{-}をサポートし，それは左寄せの
フィールドになります．つまり，フィールドの幅がフィールドの実際の内容よ
り大きい場合，必要なスペースがフィールド内容のの前ではなく後に出力され
ます．

@node Run Commands
@c @section Run Commands
@section コマンドの実行

@c You can use the list of file names created by @code{find} or
@c @code{locate} as arguments to other commands.  In this way you can
@c perform arbitrary actions on the files.
@c 
@code{find}や@code{locate}で作成されたファイル名のリストを，他のコマン
ドへの引数として使用することが可能です．この方法で，ファイルへの任意の
動作を実行することが可能です．

@menu
* Single File::
* Multiple Files::
* Querying::
@end menu

@node Single File
@c @subsection Single File
@subsection 単一のファイル

@c Here is how to run a command on one file at a time.
@c 
ここに一つのファイルへのコマンドを，一度に実行する方法があります．

@deffn Action -execdir command ;
@c Execute @var{command}; true if 0 status is returned.  @code{find} takes
@c all arguments after @samp{-exec} to be part of the command until an
@c argument consisting of @samp{;} is reached.  It replaces the string
@c @samp{@{@}} by the current file name being processed everywhere it
@c occurs in the command.  Both of these constructions need to be escaped
@c (with a @samp{\}) or quoted to protect them from expansion by the shell.
@c The command is executed in the directory in which @code{find} was run.
@c 
@var{command}を実行します．0のステータスが返される場合は真です．
@code{find}は，@samp{-exec}以降のすべての引数を，@samp{;}までの内容から
成り立つ引数をコマンドとして受けとります．それは，文字列@samp{@{@}}を現
在のファイル名で置換し，コマンドにそれがある場所で処理されます．これら
の構文はどちらも，シェルによる展開を防ぐために(@samp{\}を用いて)エスケー
プしたり，引用符で囲む必要があります．コマンドは，@code{find} を実行し
ているディレクトリで実行されます．

@c For example, to compare each C header file in the current directory with
@c the file @file{/tmp/master}:
@c 
例えば，現在のディレクトリのそれぞれのCのヘッダファイルを，ファイル
@file{/tmp/master}と比較するために以下のようにします．

@example
find . -name '*.h' -execdir diff -u '@{@}' /tmp/master ';'
@end example
@end deffn

@c Another similar option, @samp{-exec} is supported, but is less secure.
@c @xref{Security Considerations}, for a discussion of the security
@c problems surrounding @samp{-exec}.
@c 
それに似たもう一つのオプションとして，@samp{-exec}がサポートされていま
すが，余りセキュリティーが高くありません．@samp{-exec}に関するセキュリ
ティーの問題の議論は，@xref{Security Considerations}.

@deffn Action -exec command ;
@c This insecure variant of the @samp{-execdir} action is specified by
@c POSIX.  The main difference is that the command is executed in the
@c directory from which @code{find} was invoked, meaning that @samp{@{@}}
@c is expanded to a relative path starting with the name of one of the
@c starting directories, rather than just the basename of the matched
@c file.
@c 
この，余りセキュリティーの高くない@samp{-execdir}アクションの亜種は，
POSIXで指定されているものです．主な違いは，@code{find}が呼び出されたディ
レクトリでコマンドが実行されるということで，@samp{@{@}}が，マッチしたファ
イルのベース名ではなく，開始ディレクトリからの相対パスに展開されること
を意味します．
@end deffn


@node Multiple Files
@c @subsection Multiple Files
@subsection 複数のファイル

@c Sometimes you need to process files one of the time.  But usually this
@c is not necessary, and, it is faster to run a command on as many files
@c as possible at a time, rather than once per file.  Doing this saves on
@c the time it takes to start up the command each time.
@c 
一度に一つずつのファイルを処理する必要がある時もあります．しかし，これ
は不要で，ファイルごとにコマンドを実行するより，できるだけ多くのファイ
ルをコマンドで実行した方が速くなります．こうすることで，それぞれのコマ
ンドを開始する時間を稼ぐことになります．

@c The @samp{-execdir} and @samp{-exec} actions have variants that build
@c command lines containing as many matched files as possible.  
@c 
@samp{-execdir}と@samp{-exec}アクションには，できるだけ多くのマッチした
ファイルを含むコマンドラインを構築する亜種があります．

@deffn Action -execdir command @{@} +
@c This works as for @samp{-execdir command ;}, except that the
@c @samp{@{@}} at the end of the command is expanded to a list of names
@c of matching files.  This expansion is done in such a way as to avoid
@c exceeding the maximum command line length available on the system.
@c Only one @samp{@{@}} is allowed within the command, and it must appear
@c at the end, immediately before the @samp{+}.  A @samp{+} appearing in
@c any position other than immediately after @samp{@{@}} is not
@c considered to be special (that is, it does not terminate the command).
@c 
これは@samp{-execdir command ;}と同じように動作しますが，コマンドの終わ
りの@samp{@{@}}はマッチしたファイルの名前のリストになります．この展開は，
システムで利用可能なコマンドラインの最大の長さを越えないように行われま
す．コマンドには一つの@samp{@{@}}だけが可能で，@samp{+}の直前に，最後に
書く必要があります．@samp{@{@}}直後以外の位置にある@samp{+}は，特別扱い
されません(つまり，コマンドの終端ではありません)．
@end deffn


@deffn Action -exec command @{@} +
@c This insecure variant of the @samp{-execdir} action is specified by
@c POSIX.  The main difference is that the command is executed in the
@c directory from which @code{find} was invoked, meaning that @samp{@{@}}
@c is expanded to a relative path starting with the name of one of the
@c starting directories, rather than just the basename of the matched
@c file.
@c 
この，余りセキュリティーの高くない@samp{-execdir}アクションの亜種は，
POSIXで指定されているものです．主な違いは，@code{find}が呼び出されたディ
レクトリでコマンドが実行されるということで，@samp{@{@}}が，マッチしたファ
イルのベース名ではなく，開始ディレクトリからの相対パスに展開されること
を意味します．
@end deffn

@c Before @code{find} exits, any partially-built command lines are
@c executed.  This happens even if the exit was caused by the
@c @samp{-quit} action.  However, some types of error (for example not
@c being able to invoke @code{stat()} on the current directory) can cause
@c an immediate fatal exit.  In this situation, any partially-built
@c command lines will not be invoked (this prevents possible infinite
@c loops).
@c 
@code{find}が終了する前に，部分的に構築されたコマンドラインが実行されま
す．これは，@samp{-quit}アクションで終了された場合もそうなります．しか
し，エラーの形式によっては(例えば@code{stat()}の呼び出しがカレントディ
レクトリで不可能)，直後に致命的な終了になります．この状況では，部分的に
構築されたコマンド莱因は呼び出されません(これで，無限ループを抑止しま
す)．

@c Another, but less secure, way to run a command on more than one file
@c at once, is to use the @code{xargs} command, which is invoked like this:
@c 
もう一つの，余りセキュリティは高くありませんが，一度に一つ以上のファイ
ルでコマンドを実行する方法は，@code{xargs}コマンドを使用する方法で，以
下のように呼び出します．

@example
xargs @r{[}@var{option}@dots{}@r{]} @r{[}@var{command} @r{[}@var{initial-arguments}@r{]}@r{]}
@end example

@c @code{xargs} normally reads arguments from the standard input.  These
@c arguments are delimited by blanks (which can be protected with double
@c or single quotes or a backslash) or newlines.  It executes the
@c @var{command} (default is @file{/bin/echo}) one or more times with any
@c @var{initial-arguments} followed by arguments read from standard
@c input.  Blank lines on the standard input are ignored.
@c 
@code{xargs}は通常，標準入力から引数を読み込みます．これらの引数は空白
(それは，ダブルクオートやシングルクオートまたはバックスラッシュで保護可
能)や改行で分離されています．それは@var{command} (デフォルトで
@file{/bin/echo})を，標準入力から読み込まれた引数が続くあらゆる
@var{initial-arguments}を用いて，一回以上実行します．標準入力の空白行は
無視されます．

@c Instead of blank-delimited names, it is safer to use @samp{find -print0}
@c or @samp{find -fprint0} and process the output by giving the @samp{-0}
@c or @samp{--null} option to GNU @code{xargs}, GNU @code{tar}, GNU
@c @code{cpio}, or @code{perl}.  The @code{locate} command also has a
@c @samp{-0} or @samp{--null} option which does the same thing.
@c 
空白の分離名の代わりに，@samp{find -print0}や@samp{find -fprint0}を使用
し，GNU @code{xargs}，GNU @code{tar}，GNU @code{cpio}，または
@code{perl}へ，@samp{-0}や@samp{--null}オプションを与えて，出力を処理し
た方が安全です．@code{locate}コマンドにも，同じことを行う@samp{-0}や
@samp{--null}オプションがあります．

@c You can use shell command substitution (backquotes) to process a list of
@c arguments, like this:
@c 
以下のように，引数リストを処理するためシェルコマンドの置換(バッククオー
ト)を使用することが可能です．

@example
grep -l sprintf `find $HOME -name '*.c' -print`
@end example

@c However, that method produces an error if the length of the @samp{.c}
@c file names exceeds the operating system's command-line length limit.
@c @code{xargs} avoids that problem by running the command as many times as
@c necessary without exceeding the limit:
@c 
しかし，その方法は，@samp{.c}ファイル名の長さが，オペレーティングシステ
ムのコマンドラインの長さの制限を超過する場合，エラーが生じるでしょう．
@code{xargs}は，制限を超過しないようにするために必要なだけコマンドを実
行することで，その問題を避けます．

@example
find $HOME -name '*.c' -print | xargs grep -l sprintf
@end example

@c However, if the command needs to have its standard input be a terminal
@c (@code{less}, for example), you have to use the shell command
@c substitution method or use the @samp{--arg-file} option of
@c @code{xargs}.
@c 
しかし，標準入力が端末であることを必要とするコマンド(例えば，
@code{less})の場合，シェルコマンドの置換の手法や，@code{xargs}の
@samp{--arg-file}オプションを使用する必要があります．

@c The @code{xargs} command will process all its input, building command
@c lines and executing them, unless one of the commands exits with a
@c status of 255 (this will cause xargs to issue an error message and
@c stop) or it reads a line contains the end of file string specified
@c with the @samp{--eof} option. 
@c 
@code{xargs}コマンドは，コマンドが255のステータスで終了したり
(@command{xargs}がエラーメッセージを出力し停止しています)，ファイルの終
わりとなる@samp{--eof}オプションで指定されている文字列を含んでいる行を
読み込むまでは，すべての入力を処理し，コマンドラインを構築し，それを実
行します．

@menu
* Unsafe File Name Handling::
* Safe File Name Handling::
* Unusual Characters in File Names::
* Limiting Command Size::
* Interspersing File Names::
@end menu

@node Unsafe File Name Handling
@c @subsubsection Unsafe File Name Handling
@subsubsection 安全でないファイル名の扱い

@c Because file names can contain quotes, backslashes, blank characters,
@c and even newlines, it is not safe to process them using @code{xargs} in its
@c default mode of operation.  But since most files' names do not contain
@c blanks, this problem occurs only infrequently.  If you are only
@c searching through files that you know have safe names, then you need not
@c be concerned about it.  
@c 
ファイル名には，引用符，バックスラッシュ，空白文字，そして改行でさえ含
めることが可能なので，処理のデフォルトモードで@code{xargs}を使用しなが
らそれを処理することは安全ではありません．しかし，ほとんどのファイル名
は空白を含まないので，この問題は滅多に発生しません．安全なファイル名だ
と知っているファイルを検索している場合のみ，それについて悩む必要はあり
ません．

@c This example is adapted from:
@c From: pfalstad@stone.Princeton.EDU (Paul John Falstad)
@c Newsgroups: comp.unix.shell
@c Subject: Re: Beware xargs security holes
@c Date: 16 Oct 90 19:12:06 GMT
@c 
@c In many applications, if @code{xargs} botches processing a file because
@c its name contains special characters, some data might be lost.  The
@c importance of this problem depends on the importance of the data and
@c whether anyone notices the loss soon enough to correct it.  However,
@c here is an extreme example of the problems that using blank-delimited
@c names can cause.  If the following command is run daily from
@c @code{cron}, then any user can remove any file on the system:
@c 
応用する際は，名前に特殊文字を含んでいるため，@code{xargs}ファイルをう
まく処理できない場合も多く，失われるデータもあります．この問題の重要性
は，データの重要性に依存し，それを訂正するためにはできるだけ速く，失っ
たものに気づくかに依存します．しかし，ここに，空白で分離した名前の使用
で引き起こされる究極の例があります．以下のコマンドが，毎日@code{cron}で
実行される場合，あらゆるユーザは任意のファイルを削除することが可能です．

@example
find / -name '#*' -atime +7 -print | xargs rm
@end example

@c For example, you could do something like this:
@c 
例えば，以下のようなことが可能でしょう．

@example
eg$ echo > '#
vmunix'
@end example

@noindent
@c and then @code{cron} would delete @file{/vmunix}, if it ran
@c @code{xargs} with @file{/} as its current directory.
@c 
@file{/}を現在のディレクトリとして，@code{xargs}を実行してしまった場合，
そして，@code{cron}は@file{/vmunix}を削除するでしょう．

@c To delete other files, for example @file{/u/joeuser/.plan}, you could do
@c this:
@c 
他のファイルを削除するために，例えば@file{/u/joeuser/.plan}は，以下のよ
うにすることで可能でしょう．

@example
eg$ mkdir '#
'
eg$ cd '#
'
eg$ mkdir u u/joeuser u/joeuser/.plan'
'
eg$ echo > u/joeuser/.plan'
/#foo'
eg$ cd ..
eg$ find . -name '#*' -print | xargs echo
./# ./# /u/joeuser/.plan /#foo
@end example

@node Safe File Name Handling
@c @subsubsection Safe File Name Handling
@subsubsection 安全なファイル名の扱い

@c Here is how to make @code{find} output file names so that they can be
@c used by other programs without being mangled or misinterpreted.  You can
@c process file names generated this way by giving the @samp{-0} or
@c @samp{--null} option to GNU @code{xargs}, GNU @code{tar}, GNU
@c @code{cpio}, or @code{perl}.
@c 
@code{find}が出力したファイル名を，他のプログラムでめちゃくちゃにされた
り誤解されたりしないで，他のプログラムで使用可能にする方法は以下のよう
になります．この方法で生成されたファイル名に，@samp{-0}や@samp{--null}
オプションを，GNU @code{xargs}，GNU @code{tar}，GNU @code{cpio}，または，
@code{perl} に渡すことで，処理することが可能です．

@deffn Action -print0
@c True; print the full file name on the standard output, followed by a
@c null character.
@c 
真です．標準出力の完全なファイル名にヌル文字を続けて出力します．
@end deffn

@deffn Action -fprint0 file
@c True; like @samp{-print0} but write to @var{file} like @samp{-fprint}
@c (@pxref{Print File Name}).
@c 
真です．@samp{-print0}ににていますが，@var{file}を@samp{-fprint}のように
書き出します(@pxref{Print File Name})．
@end deffn

@c As of findutils version 4.2.4, the @code{locate} program also has a
@c @samp{--null} option which does the same thing.  For similarity with
@c @code{xargs}, the short form of the option @samp{-0} can also be used.
@c 
findutilsのバージョン4.2.4からは，@code{locate}プログラムにも同様なこと
を行う@samp{--null}オプションがあります．@code{xargs}と同様，短い形式の
オプション@samp{-0}も使用することが可能です．

@c If you want to be able to handle file names safely but need to run
@c commands which want to be connected to a terminal on their input, you
@c can use the @samp{--arg-file} option to @code{xargs} like this:
@c 
ファイル名を安全に処理したいが，コマンドを入力の終わりに繋げて実行する
必要がある場合，以下のように@code{xargs}の@samp{--arg-file}オプションを
使用することが可能です．

@example
find / -name xyzzy -print0 > list
xargs --null --arg-file=list munge
@end example

@c The example above runs the @code{munge} program on all the files named
@c @file{xyzzy} that we can find, but @code{munge}'s input will still be
@c the terminal (or whatever the shell was using as standard input).  If
@c your shell has the ``process substitution'' feature @samp{<(...)}, you
@c can do this in just one step:
@c 
上記の例では，見つけることができた@file{xyzzy}と命名されたすべてのファ
イルで，@code{munge}プログラムを実行しまが，@code{munge}の入力は端末に
なっています(また，実際にはシェルが標準入力を使用しています)．シェルに
``処理の代入''機能@samp{<(...)}がある場合，ワンステップで実行することが
可能です．

@example
xargs --null --arg-file=<(find / -name xyzzy -print0) munge
@end example

@node Unusual Characters in File Names
@c @subsubsection Unusual Characters in File Names
@subsubsection ファイル名の通常ではない文字

@c As discussed above, you often need to be careful about how the names
@c of files are handled by @code{find} and other programs.  If the output
@c of @code{find} is not going to another program but instead is being
@c shown on a terminal, this can still be a problem.  For example, some
@c character sequences can reprogram the function keys on some terminals.
@c @xref{Security Considerations}, for a discussion of other security
@c problems relating to @code{find}.
@c 
これまで議論したように，@code{find}とその他のプログラムでのファイル名の
処理方法について，頻繁に注意する必要があります．@code{find}の出力を他の
プログラムに渡さず端末に表示させる場合でも，問題になることがあります．
例えば，特定の文字の並びには端末のファンクションキーを再構成するものも
あります．@code{find}のセキュリティの問題に関する議論は，
@xref{Security Considerations}.

@c Unusual characters are handled differently by various
@c actions, as described below.
@c 
通常ではない文字は，以下の記述のように，さまざまなアクションとは別に処
理されます．

@table @samp
@item -print0
@itemx -fprint0
@c Always print the exact filename, unchanged, even if the output is
@c going to a terminal.
@c 
常に正確なファイル名を出力し，出力が端末の場合でも変更されません．
@item -ok
@itemx -okdir
@c Always print the exact filename, unchanged.  This will probably change
@c in a future release.
@c 
常に正確なファイル名を出力し，変更されません．これは将来のリリースで，
おそらく変更されるでしょう．
@item -ls
@itemx -fls
@c Unusual characters are always escaped.  White space, backslash, and
@c double quote characters are printed using C-style escaping (for
@c example @samp{\f}, @samp{\"}).  Other unusual characters are printed
@c using an octal escape.  Other Printable characters (for @samp{-ls} and
@c @samp{-fls} these are the characters between octal 041 and 0176) are
@c printed as-is.
@c 
通常ではない文字は常にエスケープされます．空白，バックスラッシュ，そし
て二重引用符文字はC形式のエスケープ(例えば，@samp{\f}，@samp{\"})で出力
されます．それ以外の通常ではない文字は，八進数を用いて出力されます．そ
れ以外の印字可能文字(@samp{-ls}と@samp{-fls}では，八進数の041と0176の間
の文字)は，そのまま出力されます．
@item -printf
@itemx -fprintf
@c If the output is not going to a terminal, it is printed as-is.
@c Otherwise, the result depends on which directive is in use:
@c 
出力が端末でない場合，そのまま出力されます．それ以外の場合，結果は使用
されている指示語に依存します．
@table @asis
@item %D, %F, %H, %Y, %y 
@c These expand to values which are not under control of files' ownwers,
@c and so are printed as-is.
@c 
これらは，ファイルの所有者の制御下には無い値に展開され，そのまま出力さ
れます．
@item  %a, %b, %c, %d, %g, %G, %i, %k, %m, %M, %n, %s, %t, %u, %U
@c These have values which are under the control of files' ownwers but which
@c cannot be used to send arbitrary data to the terminal, and so these
@c are printed as-is.  
@c 
これらは，ファイルの所有者の制御下にはある値になりますが，端末に不明瞭
はデータを送るために使用されることが無いので，そのまま出力されます．
@item %f, %h, %l, %p, %P 
@c The output of these directives is quoted if the output is going to a
@c terminal.
@c 
これらの指示語の出力は，出力が端末の場合，引用符で囲まれます．

@c This quoting is performed in the same way as for GNU @code{ls}.   
@c This is not the same quoting mechanism as the one used for  @samp{-ls} and
@c @samp{fls}.   If you are able to decide what format to use for the output 
@c of @code{find} then it is normally better to use @samp{\0} as a terminator
@c than to use newline, as file names can contain white space and newline
@c characters.
@c 
この引用符で囲む手法は，GNU @code{ls}と同じ方法で実行されます．
@samp{-ls}と@samp{-fls}で使用される引用符で囲むメカニズムとは異なります．
@code{find}の出力で使用する書式を決定することが可能な場合，通常は改行で
はなく@samp{\0}を終端文字として使用するほうが良く，それは，ファイル名に
は空白や改行文字を含めることができるからです．

@end table 
@item -print
@itemx -fprint
@c Quoting is handled in the same way as for the @samp{%p} directive
@c of @samp{-printf} and @samp{-fprintf}.  If you are using @code{find} in
@c a script or in a situation where the matched files might have
@c arbitrary names, you should consider using @samp{-print0} instead of
@c @samp{-print}.
@c 
引用符での囲み方は，@samp{-printf}と@samp{-fprintf}の@samp{%p}指示語と
同じ方法で処理されます．スクリプト内やマッチしたファイルが不明瞭な名前
を持つ状況で@code{find}を使用している場合，@samp{-print}の代わりに
@samp{-print0}の使用を検討すべきでしょう．
@end table

@c The @code{locate} program quotes and escapes unusual characters in
@c file names in the same way as @code{find}'s @samp{-print} action.
@c 
@code{locate}プログラムは，@code{find}の@samp{-print}アクションと同じ方
法で，ファイル名の通常ではない文字を引用符で囲んだり，エスケープしたり
します．

@c The behaviours described above may change soon, as the treatment of
@c unprintable characters is harmonised for @samp{-ls}, @samp{-fls},
@c @samp{-print}, @samp{-fprint}, @samp{-printf} and @samp{-fprintf}.
@c 
これまで記述してきた動作はまもなく変更される可能性があり，それは，印字
不能な文字列の処理を，@samp{-ls}，@samp{-fls}，@samp{-print}，
@samp{-fprint}，@samp{-printf}，そして@samp{-fprintf}で調和させるためで
す．

@node Limiting Command Size
@c @subsubsection Limiting Command Size
@subsubsection コマンドサイズの制限

@c @code{xargs} gives you control over how many arguments it passes to the
@c command each time it executes it.  By default, it uses up to
@c @code{ARG_MAX} - 2k, or 128k, whichever is smaller, characters per
@c command.  It uses as many lines and arguments as fit within that limit.
@c The following options modify those values.
@c 
@code{xargs}で，それぞれの実行時にコマンドに渡す引数の数を制御すること
ができます．デフォルトで，@code{ARG_MAX} - 2k，または128kまでの小さい方
を，コマンドごとの文字として使用します．それは，制限以内のできるだけ多
くの行と引数を使用します．以下のオプションはこれらの値を変更します．

@table @code
@item --no-run-if-empty
@itemx -r
@c If the standard input does not contain any nonblanks, do not run the
@c command.  By default, the command is run once even if there is no input.
@c 
標準入力が空白でない文字を含まない場合，コマンドを実行しません．デフォ
ルトで，入力が無い場合でもコマンドは一度実行されます．

@item --max-lines@r{[}=@var{max-lines}@r{]}
@itemx -L@r{[}@var{max-lines}@r{]}
@itemx -l@r{[}@var{max-lines}@r{]}
@c Use at most @var{max-lines} nonblank input lines per command line;
@c @var{max-lines} defaults to 1 if omitted.  Trailing blanks cause an
@c input line to be logically continued on the next input line, for the
@c purpose of counting the lines.  Implies @samp{-x}.   The preferred
@c name for this option is @samp{-L} as this is specified by POSIX.  This
@c option should be compatible with @samp{-I} but currently it is not.
@c 
最大@var{max-lines}の空白でない入力行を，コマンドラインごとに使用します．
省略された場合，@var{max-lines}のデフォルトは1です．後置される空白は，
行を数える目的で，入力行を次の入力行に論理的に連結します．@samp{-x}を暗
黙に指定します．より好まれるこのオプションの名前は@samp{-L}で，それは
POSIXで指定されています．このオプションは@samp{-I}と互換性があるべきで
すが，現在はそうなっていません．

@item --max-args=@var{max-args}
@itemx -n @var{max-args}
@c Use at most @var{max-args} arguments per command line.  Fewer than
@c @var{max-args} arguments will be used if the size (see the @samp{-s}
@c option) is exceeded, unless the @samp{-x} option is given, in which case
@c @code{xargs} will exit.
@c 
最大@var{max-args}個の引数を，コマンドラインごとに使用します．大きさが
@var{max-args}を超過した場合，それより小さいものが使用されますが，それ
は@samp{-x}オプションが与えられていない場合に限り，その場合は
@code{xargs}は終了します．

@item --max-chars=@var{max-chars}
@itemx -s @var{max-chars}
@c Use at most @var{max-chars} characters per command line, including the
@c command and initial arguments and the terminating nulls at the ends of
@c the argument strings.  If you specify a value for this option which is
@c too large or small, a warning message is printed and the appropriate
@c upper or lower limit is used instead.
@c 
最大@var{max-chars}文字を，コマンドラインごとに使用し，それはコマンドと
最初の引数と引数文字列の最後の終端のヌルを含みます．このオプションに大
きすぎたり小さすぎたりする値を指定している場合，警告メッセージが出力さ
れ，代わりに適切な上限や下限が使用されます．

@item --max-procs=@var{max-procs}
@itemx -P @var{max-procs}
@c Run up to @var{max-procs} processes at a time; the default is 1.  If
@c @var{max-procs} is 0, @code{xargs} will run as many processes as
@c possible at a time.  Use the @samp{-n}, @samp{-s}, or @samp{-L} option
@c with @samp{-P}; otherwise chances are that the command will be run only
@c once.
@c 
@var{max-procs}プロセスまで一度に実行します．デフォルトは1です．
@var{max-procs}が0の場合，@code{xargs}は可能な限り多くのプロセスを，一
度に実行します．@samp{-P}とともに，@samp{-n}，@samp{-s}，または
@samp{-L}オプションを使用して下さい．そうしない場合，コマンドが実行され
る機会は，一度しかありません．
@end table

@node Interspersing File Names
@c @subsubsection Interspersing File Names
@subsubsection 服数のファイル名を分割する

@c @code{xargs} can insert the name of the file it is processing between
@c arguments you give for the command.  Unless you also give options to
@c limit the command size (@pxref{Limiting Command Size}), this mode of
@c operation is equivalent to @samp{find -exec} (@pxref{Single File}).
@c 
@code{xargs}は，処理するファイル名を，コマンドに対して与えた引数の間に
挿入することが可能です．コマンドの大きさを制限するオプションを与えてい
ない場合(@pxref{Limiting Command Size})，このモードの処理は@samp{find
-exec}と等価です(@pxref{Single File})．

@table @code
@item --replace@r{[}=@var{replace-str}@r{]}
@itemx -i@r{[}@var{replace-str}@r{]}
@c Replace occurrences of @var{replace-str} in the initial arguments with
@c names read from the input.  Also, unquoted blanks do not
@c terminate arguments; instead, the input is split at newlines only.  If
@c @var{replace-str} is omitted, it defaults to @samp{@{@}} (like for
@c @samp{find -exec}).  Implies @samp{-x} and @samp{-l 1}.  As an
@c example, to sort each file the @file{bills} directory, leaving the
@c output in that file name with @file{.sorted} appended, you could do:
@c 
最初の引数の@var{replace-str}があるところを，入力から読み込まれる名前に
置換します．また，引用符で囲まれていない空白は，引数の最後になりません．
その代わりに，入力は改行だけで分離されます．@var{replace-str}が省略され
た場合，デフォルトは@samp{@{@}}です(@samp{find -exec}に似ています)．
@samp{-x}と@samp{-l 1}を暗黙に指定します．例えば，@file{bills}ディレク
トリのそれぞれのファイルをソートし，出力をファイル名に@file{.sorted}を
後置したものに書き出す時，以下のようにすることで可能です．

@example
find bills -type f | xargs -iXX sort -o XX.sorted XX
@end example

@noindent
@c The equivalent command using @samp{find -execdir} is:
@c 
@samp{find -execdir}を使用した等価のコマンドは以下のようになります．

@example
find bills -type f -execdir sort -o '@{@}.sorted' '@{@}' ';'
@end example
@end table

@node Querying
@c @subsection Querying
@subsection 問い合わせ

@c To ask the user whether to execute a command on a single file, you can
@c use the @code{find} primary @samp{-okdir} instead of @samp{-execdir},
@c and the @code{find} primary @samp{-ok} instead of @samp{-exec}:
@c 
ユーザに単一のファイル上でコマンドを実行するかどうかを尋ねるため，
@code{find}のプライマリ@samp{-execdir}の代わりに@samp{-okdir}を，そして
@code{find}のプライマリ@samp{-exec}の代わりに@samp{-ok}を使用することが
可能です．

@deffn Action -okdir command ;
@c Like @samp{-execdir} (@pxref{Single File}), but ask the user first (on
@c the standard input); if the response does not start with @samp{y} or
@c @samp{Y}, do not run the command, and return false.
@c 
@samp{-execdir}に似ていますが(@pxref{Single File})，ユーザに(標準入力上
で)最初に尋ねます．応答が@samp{y}や@samp{Y}で始まらない場合，コマンドを
実行せず，偽を返します．
@end deffn

@deffn Action -ok command ;
@c This insecure variant of the @samp{-okdir} action is specified by
@c POSIX.  The main difference is that the command is executed in the
@c directory from which @code{find} was invoked, meaning that @samp{@{@}}
@c is expanded to a relative path starting with the name of one of the
@c starting directories, rather than just the basename of the matched
@c file.
@c 
この，余りセキュリティーの高くない@samp{-okdir}アクションの亜種は，
POSIXで指定されているものです．主な違いは，@code{find}が呼び出されたディ
レクトリでコマンドが実行されるということで，@samp{@{@}}が，マッチしたファ
イルのベース名ではなく，開始ディレクトリからの相対パスに展開されること
を意味します．
@end deffn

@c When processing multiple files with a single command, to query the user
@c you give @code{xargs} the following option.  When using this option, you
@c might find it useful to control the number of files processed per
@c invocation of the command (@pxref{Limiting Command Size}).
@c 
単一のコマンドで複数のファイルを処理する時，ユーザに問い合わせるため，
@code{xargs}に以下のオプションを与えます．このオプションを使用する時，
コマンドの呼出ごとに処理するファイルの数を制御することが役に立つと分か
るでしょう．

@table @code
@item --interactive
@itemx -p
@c Prompt the user about whether to run each command line and read a line
@c from the terminal.  Only run the command line if the response starts
@c with @samp{y} or @samp{Y}.  Implies @samp{-t}.
@c 
ユーザにそれぞれのコマンドラインを実行するかどうかプロンプトを表示し，
端末から一行読み込みます．応答が@samp{y}や@samp{Y}で始まる場合のみコマ
ンドラインを実行します．暗黙に@samp{-t}が指定されます．
@end table

@node Delete Files
@c @section Delete Files
@section ファイルの削除

@deffn Action -delete
@c Delete files or directories; true if removal succeeded.  If the
@c removal failed, an error message is issued.
@c 
ファイルやディレクトリを削除します．削除に成功した場合は真です．削除に
失敗した場合，エラーメッセージが出力されます．

@c The use of the @samp{-delete} action on the command line automatically
@c turns on the @samp{-depth} option (@pxref{find Expressions}).
@c 
コマンドラインで@samp{-delete}アクションを使用すると，自動的に
@samp{-depth}オプションがオンになります(@pxref{find Expressions})．
@end deffn

@node Adding Tests
@c @section Adding Tests
@section テストの追加

@c You can test for file attributes that none of the @code{find} builtin
@c tests check.  To do this, use @code{xargs} to run a program that filters
@c a list of files printed by @code{find}.  If possible, use @code{find}
@c builtin tests to pare down the list, so the program run by @code{xargs}
@c has less work to do.  The tests builtin to @code{find} will likely run
@c faster than tests that other programs perform.
@c 
@code{find}の組み込みテストが調査しない，ファイルの属性の調査をすること
が可能です．こうするために，@code{find}が出力したファイルリストへのフィ
ルターとなるプログラムを実行するため，@code{xargs}を使用してください．
@code{xargs}によって実行されるプログラムが行なう仕事を減らすため，リス
トが少なくなるように，@code{find}の組み込みテストをできるだけ使用して下
さい．@code{find}の組み込みテストは，他のプログラムが実行するテストより
速く実行されるでしょう．

@c For reasons of efficiency it is often useful to limit the number of
@c times an external program has to be run.  For this reason, it is often
@c a good idea to implement ``extended'' tests by using @code{xargs}.
@c 
効率の問題で，外部プログラムの実行回数を制限することが役に立つこともよ
くあります．このため，@code{xargs}を使用して``拡張''テストを実装するの
は良い考えです．

@c For example, here is a way to print the names of all of the unstripped
@c binaries in the @file{/usr/local} directory tree.  Builtin tests avoid
@c running @code{file} on files that are not regular files or are not
@c executable.
@c 
例えば以下に，@file{/usr/local}ディレクトリツリー内のstripされていない
バイナリの，すべての名前を出力する方法があります．組み込みテストは，通
常のファイルでないものや，実行可能でないファイルで，@code{file}を実行す
ることを避けます．

@example
find /usr/local -type f -perm /a=x | xargs file | 
  grep 'not stripped' | cut -d: -f1
@end example

@noindent
@c The @code{cut} program removes everything after the file name from the
@c output of @code{file}.
@c 
@code{cut}プログラムは，@code{file}の出力からファイル名以降のものすべて
を削除します．

@c However, using @code{xargs} can present important security problems
@c (@pxref{Security Considerations}).  These can be avoided by using
@c @samp{-execdir}.  The @samp{-execdir} action is also a useful way of
@c putting your own test in the middle of a set of other tests or actions
@c for @code{find} (for example, you might want to use @samp{-prune}).
@c 
しかし，@code{xargs}を使用することは，セキュリティの重要な問題に遭遇す
ることもあります(@pxref{Security Considerations})．これらは
@samp{-execdir}を使用することで回避することが可能です．@samp{-execdir}
アクションは，他のテスト集の合間や@code{find}のアクションに独自のテスト
を書くときにも役に立ちます(例えば，@samp{-prune}を使用したいかもしれま
せん)．

@c Idea from Martin Weitzel.
@c 
@c To place a special test somewhere in the middle of a @code{find}
@c expression, you can use @samp{-execdir} (or, less securely,
@c @samp{-exec}) to run a program that performs the test.  Because
@c @samp{-execdir} evaluates to the exit status of the executed program,
@c you can use a program (which can be a shell script) that tests for a
@c special attribute and make it exit with a true (zero) or false
@c (non-zero) status.  It is a good idea to place such a special test
@c @emph{after} the builtin tests, because it starts a new process which
@c could be avoided if a builtin test evaluates to false.  
@c 
@code{find}の式の中間のどこかで特殊なテストを配置したい場合，テストを実
施するプログラムを実行するために，@samp{-execdir} (または，余りセキュリ
ティの高くない@samp{-exec})を使用することが可能です．@samp{-execdir}は，
実行されたプログラムの終了ステータスを評価するので，特殊な属性を検査す
るプログラム(それは，シェルスクリプトも可能です)を書くことと，真(ゼロ)
や偽(ゼロ以外)のステータスで終了させることが可能です．そのような特殊な
テストは，組み込みテストが偽と評価される場合は行なわない新しいプロセス
を開始するので，それを組み込みテストの@emph{後に}配置することは良い考え
です．

@c Here is a shell script called @code{unstripped} that checks whether its
@c argument is an unstripped binary file:
@c 
以下は，引数がstripされているバイナリファイルかどうかを調査する，
@code{unstripped}という名前のシェルスクリプトです．

@example
#! /bin/sh
file "$1" | grep -q "not stripped"
@end example


@c This script relies on the fact that the shell exits with the status of
@c the last command in the pipeline, in this case @code{grep}.  The
@c @code{grep} command exits with a true status if it found any matches,
@c false if not.  Here is an example of using the script (assuming it is
@c in your search path).  It lists the stripped executables (and shell
@c scripts) in the file @file{sbins} and the unstripped ones in
@c @file{ubins}.
@c 
このスクリプトは，パイプラインの最後のコマンドのステータスでシェルが終
了することに依存し，この場合@code{grep}になります．@code{grep}は，マッ
チが見つかる場合は真で終了し，それ以外では偽で終了します．以下にに(サー
チパスにあると仮定している)スクリプトを利用している例があります．それは，
ファイル@file{sbins}内のstripされている実行形式と，@file{ubins}内の
stripされていない実行形式をリストアップします．

@example
find /usr/local -type f -perm /a=x \
  \( -execdir unstripped '@{@}' \; -fprint ubins -o -fprint sbins \)
@end example

@node Common Tasks, Databases, Actions, Top
@c @chapter Common Tasks
@chapter 一般的な作業

@c The sections that follow contain some extended examples that both give a
@c good idea of the power of these programs, and show you how to solve
@c common real-world problems.
@c 
以下のセクションには，これらのプログラムの能力を利用する際の良い考えを
与え，一般的な現実問題を解説する方法を提示している，拡張された例を含ま
れています．

@menu
* Viewing And Editing::
* Archiving::
* Cleaning Up::
* Strange File Names::
* Fixing Permissions::
* Classifying Files::
@end menu

@node Viewing And Editing
@c @section Viewing And Editing
@section 閲覧と編集

@c To view a list of files that meet certain criteria, simply run your file
@c viewing program with the file names as arguments.  Shells substitute a
@c command enclosed in backquotes with its output, so the whole command
@c looks like this:
@c 
特定の基準を満たすファイルのリストを見るために，引数にファイル名を用い
て，単純にファイルビューアープログラムを実行します．シェルは，バックク
オートで囲まれたコマンドを，その出力に置換するので，コマンド全体は以下
のようになります．

@example
less `find /usr/include -name '*.h' | xargs grep -l mode_t`
@end example

@noindent
@c You can edit those files by giving an editor name instead of a file
@c viewing program:
@c 
ファイルビューアープログラムの代わりにエディタの名前を与えることで，こ
れらのファイルを編集することも可能です．

@example
emacs `find /usr/include -name '*.h' | xargs grep -l mode_t`
@end example

@c Because there is a limit to the length of any individual command line,
@c there is a limit to the number of files that can be handled in this
@c way.  We can get around this difficulty by using xargs like this:
@c 
コマンドラインには個別の長さに制限があるので，この方法で処理されるファ
イル数には制限があります．以下のように@command{xargs}を使用することで，
この面倒なことを回避します．

@example
find /usr/include -name '*.h' | xargs grep -l mode_t > todo
xargs --arg-file=todo emacs
@end example

@c Here, @code{xargs} will run @code{emacs} as many times as necessary to
@c visit all of the files listed in the file @file{todo}.
@c 
これで，@code{xargs}はファイル@file{todo}にリストアップされているすべて
のファイルに必要な回数，@code{emacs}を実行します．

@node Archiving
@c @section Archiving
@section アーカイブ

@c You can pass a list of files produced by @code{find} to a file archiving
@c program.  GNU @code{tar} and @code{cpio} can both read lists of file
@c names from the standard input---either delimited by nulls (the safe way)
@c or by blanks (the lazy, risky default way).  To use null-delimited
@c names, give them the @samp{--null} option.  You can store a file archive
@c in a file, write it on a tape, or send it over a network to extract on
@c another machine.
@c 
@code{find}で生成したファイルリストを，ファイルアーカイブプログラムに渡
すことも可能です．GNU @code{tar}と@code{cpio}は，どちらも標準入力からファ
イル名のリストを読み込むことが可能です---ヌル(安全な方法)，または，空白
(簡単だが危険なデフォルトの方法)のどちらかで分離します．ヌルで名前を分
離する方法を使用するため，@samp{--null}オプションを与えてください．ファ
イルアーカイブをファイルに保存したり，テープに書き出したり，ネットワー
ク越しの他のマシンに展開したりすることも可能です。

@c One common use of @code{find} to archive files is to send a list of the
@c files in a directory tree to @code{cpio}.  Use @samp{-depth} so if a
@c directory does not have write permission for its owner, its contents can
@c still be restored from the archive since the directory's permissions are
@c restored after its contents.  Here is an example of doing this using
@c @code{cpio}; you could use a more complex @code{find} expression to
@c archive only certain files.
@c 
ファイルをアーカイブする一般的な@code{find}の使用方法は，ディレクトリツ
リー内のファイルリストを@code{cpio}に送る方法です．所有者がディレクトリ
に書き込み権限が無い場合は@samp{-depth}を使用し，(その場合)ディレクトリ
の権限はそのコンテンツのリストア後にリストアされるため，そのコンテンツ
をアーカイブからリストアすることが可能です．こうするために@code{cpio}使
用した例がここにあります．特定のファイルのみアーカイブするために，より
複雑な@code{find}の式を使用することも可能です．

@example
find . -depth -print0 |
  cpio --create --null --format=crc --file=/dev/nrst0
@end example

@c You could restore that archive using this command:
@c 
以下のコマンドを使用して，そのアーカイブをリストアすることが可能です．

@example
cpio --extract --null --make-dir --unconditional \
  --preserve --file=/dev/nrst0
@end example

@c Here are the commands to do the same things using @code{tar}:
@c 
同じことを@code{tar}を使用して行なうコマンドは以下のようになります．

@example
find . -depth -print0 |
  tar --create --null --files-from=- --file=/dev/nrst0

tar --extract --null --preserve-perm --same-owner \
  --file=/dev/nrst0
@end example

@c Idea from Rick Sladkey.
@c 
@c Here is an example of copying a directory from one machine to another:
@c 
一つのマシンから他のマシンに，ディレクトリをコピーする例は以下のように
なります．

@example
find . -depth -print0 | cpio -0o -Hnewc |
  rsh @var{other-machine} "cd `pwd` && cpio -i0dum"
@end example

@node Cleaning Up
@c @section Cleaning Up
@section クリーンアップ

@c Idea from Jim Meyering.
@c 
@c This section gives examples of removing unwanted files in various situations.
@c Here is a command to remove the CVS backup files created when an update
@c requires a merge:
@c 
このセクションでは，さまざまな状況で，不要なファイルを削除する例を提供
します．マージの要求で更新された時に作成されるCVSバックアップファイルを
削除するコマンドは以下のようになります．

@example
find . -name '.#*' -print0 | xargs -0r rm -f
@end example

@c The command above works, but the following is safer:
@c 
上記のコマンドは動作しますが，以下のものがより安全です．

@example
find . -name '.#*' -depth -delete
@end example

@c Idea from Franc,ois Pinard.
@c 
@c You can run this command to clean out your clutter in @file{/tmp}.  You
@c might place it in the file your shell runs when you log out
@c (@file{.bash_logout}, @file{.logout}, or @file{.zlogout}, depending on
@c which shell you use).
@c 
@file{/tmp}内のゴミファイルをきれいにするためにこのコマンドを実行するこ
とが可能です．ログアウトする時にシェルがそれを実行するよう，(使用してい
るシェルに依存しますが，@file{.bash_logout}，@file{.logout}，または
@file{.zlogout})ファイルに書き出すことも可能です．

@example
find /tmp -depth -user "$LOGNAME" -type f -delete 
@end example

@c If your @code{find} command removes directories, you may find that 
@c you get a spurious error message when @code{find} tries to recurse
@c into a directory that has now been removed.  Using the @samp{-depth}
@c option will normally resolve this problem.
@c 
@code{find}コマンドでディレクトリを削除する場合，@code{find}が削除され
たディレクトリの再帰的な削除を試みるとき，偽りのエラーメッセージを見る
かもしれません．@samp{-depth}オプションを使用することで，通常この問題は
解決されます．

@c Idea from Noah Friedman.
@c 
@c To remove old Emacs backup and auto-save files, you can use a command
@c like the following.  It is especially important in this case to use
@c null-terminated file names because Emacs packages like the VM mailer
@c often create temporary file names with spaces in them, like @file{#reply
@c to David J. MacKenzie<1>#}.
@c 
古いEmacsのバックアップファイルと自動保存ファイルを削除するために，以下
のようなコマンドが使用可能です．VMメーラーのようなEmacsパッケージは，
@file{#reply to David J. MacKenzie<1>#}のようにスペースを含む一時ファイ
ルを作成することが多いので，ヌルで終端されているファイル名を使用する方
法は，この場合には特に重要です．

@example
find ~ \( -name '*~' -o -name '#*#' \) -print0 |
  xargs --no-run-if-empty --null rm -vf
@end example

@c Removing old files from @file{/tmp} is commonly done from @code{cron}:
@c 
@file{/tmp}から古いファイルを削除するため，通常は@code{cron}から実行し
ます．

@c Idea from Kaveh Ghazi.
@c 
@example
find /tmp /var/tmp -not -type d -mtime +3 -delete
find /tmp /var/tmp -depth -mindepth 1 -type d -empty -delete
@end example

@c The second @code{find} command above uses @samp{-depth} so it cleans out
@c empty directories depth-first, hoping that the parents become empty and
@c can be removed too.  It uses @samp{-mindepth} to avoid removing
@c @file{/tmp} itself if it becomes totally empty.
@c 
上記の二番目の@code{find}コマンドは，空のディレクトリの最初の深度をきれ
いにするため@samp{-depth}を使用し，それで親が空になり，削除も可能になる
ことを期待しています．全体が空になった場合，@file{/tmp}自身を削除しない
ように，@samp{-mindepth}を使用しています．

@node Strange File Names
@c @section Strange File Names
@section 奇妙なファイル名

@c Idea from:
@c From: tmatimar@isgtec.com (Ted Timar)
@c Newsgroups: comp.unix.questions,comp.unix.shell,comp.answers,news.answers
@c Subject: Unix - Frequently Asked Questions (2/7) [Frequent posting]
@c Subject: How do I remove a file with funny characters in the filename ?
@c Date: Thu Mar 18 17:16:55 EST 1993
@c 
@c @code{find} can help you remove or rename a file with strange characters
@c in its name.  People are sometimes stymied by files whose names contain
@c characters such as spaces, tabs, control characters, or characters with
@c the high bit set.  The simplest way to remove such files is:
@c 
@code{find}は，名前に奇妙な文字を含むファイルを，削除したり名前を変更し
たりする手助けにもなります．スペース，タブ，制御文字，またはハイビット
セットを用いた文字のような，もの(文字)を含む名前のファイルに邪魔される
ときもあります．そのようなファイルを削除する最も簡単な方法は，以下のよ
うになります．

@example
rm -i @var{some*pattern*that*matches*the*problem*file}
@end example

@c @code{rm} asks you whether to remove each file matching the given
@c pattern.  If you are using an old shell, this approach might not work if
@c the file name contains a character with the high bit set; the shell may
@c strip it off.  A more reliable way is:
@c 
@code{rm}は，与えられたパターンにマッチするそれぞれのファイルを削除する
かどうか尋ねます．古いシェルを使用している場合で，ファイル名にハイビッ
トセットを用いた文字を含む場合には，この方法は動作しません．シェルはそ
れを削除します．より信頼できる方法は，以下のようになります．

@example
find . -maxdepth 1 @var{tests} -okdir rm '@{@}' \;
@end example

@noindent
@c where @var{tests} uniquely identify the file.  The @samp{-maxdepth 1}
@c option prevents @code{find} from wasting time searching for the file in
@c any subdirectories; if there are no subdirectories, you may omit it.  A
@c good way to uniquely identify the problem file is to figure out its
@c inode number; use
@c 
ここでの@var{tests}は，ファイルをユニークに識別します．@samp{-maxdepth
1}オプションは，@code{find}があらゆるサブディレクトリのファイルを検索す
ることで，時間を無駄にすることを妨げます．サブディレクトリが無い場合は
省略してもかまいません．問題のファイルをユニークに識別する良い方法は，
そのinode番号を知ることです．以下のように使用します．

@example
ls -i
@end example

@c Suppose you have a file whose name contains control characters, and you
@c have found that its inode number is 12345.  This command prompts you for
@c whether to remove it:
@c 
制御文字を名前に含んでいるファイルがあって，そのinode番号が12345だと分
かったと仮定します．以下のコマンドは，それを削除するかどうか，プロンプ
トを表示します．

@example
find . -maxdepth 1 -inum 12345 -okdir rm -f '@{@}' \;
@end example

@c If you don't want to be asked, perhaps because the file name may contain
@c a strange character sequence that will mess up your screen when printed,
@c then use @samp{-execdir} instead of @samp{-okdir}.
@c 
ファイル名が奇妙な文字列を含んでいて，出力時にスクリーンが駄目になるた
め，尋ねられたくない場合は，@samp{-okdir}の代わりに@samp{-execdir}を使
用して下さい．

@c If you want to rename the file instead, you can use @code{mv} instead of
@c @code{rm}:
@c 
そうではなく，ファイルの名前を変更したい場合，@code{rm}の代わりに
@code{mv}を使用することが可能です．

@example
find . -maxdepth 1 -inum 12345 -okdir mv '@{@}' @var{new-file-name} \;
@end example

@node Fixing Permissions
@c @section Fixing Permissions
@section 権限の修正

@c Suppose you want to make sure that everyone can write to the directories in a
@c certain directory tree.  Here is a way to find directories lacking either
@c user or group write permission (or both), and fix their permissions:
@c 
特定のディレクトリツリーのディレクトリに，誰でも書き込めることを確実に
したいと仮定します．ユーザまたはグループ(または両方)の権限が無く，それ
らの権限を修正する方法は以下のようになります．

@example
find . -type d -not -perm -ug=w | xargs chmod ug+w
@end example

@noindent
@c You could also reverse the operations, if you want to make sure that
@c directories do @emph{not} have world write permission.
@c 
ディレクトリが誰でも書き込め@emph{ない}ことを確実にしたい場合，反対の処
理も可能でしょう．

@node Classifying Files
@c @section Classifying Files
@section ファイルの分類

@c Idea from:
@c From: martin@mwtech.UUCP (Martin Weitzel)
@c Newsgroups: comp.unix.wizards,comp.unix.questions
@c Subject: Advanced usage of 'find' (Re: Unix security automating script)
@c Date: 22 Mar 90 15:05:19 GMT
@c 
@c If you want to classify a set of files into several groups based on
@c different criteria, you can use the comma operator to perform multiple
@c independent tests on the files.  Here is an example:
@c 
ファイルの集合を異なる基準でいくつかのグループに分類したい場合，ファイ
ル上で複数の独立したテストを実行するため，カンマオペレータを使用するこ
とが可能です．例えば以下のようにします．

@example
find / -type d \( -perm -o=w -fprint allwrite , \
  -perm -o=x -fprint allexec \)

echo "Directories that can be written to by everyone:"
cat allwrite
echo ""
echo "Directories with search permissions for everyone:"
cat allexec
@end example

@c @code{find} has only to make one scan through the directory tree (which
@c is one of the most time consuming parts of its work).
@c 
@code{find}は，ディレクトリツリー全体を一度走査する必要があるだけです
(それはその作業で最も時間がかかる部分の一つです)．

@node Databases, File Permissions, Common Tasks, Top
@c @chapter File Name Databases
@chapter ファイル名のデータベース

@c The file name databases used by @code{locate} contain lists of files
@c that were in particular directory trees when the databases were last
@c updated.  The file name of the default database is determined when
@c @code{locate} and @code{updatedb} are configured and installed.  The
@c frequency with which the databases are updated and the directories for
@c which they contain entries depend on how often @code{updatedb} is run,
@c and with which arguments.
@c 
@code{locate}で使用されるファイル名のデータベースには，データベースが最
後に更新された時の，特定のディレクトリツリー内のファイルのリストが含ま
れています．データベースのデフォルトファイル名は，@code{locate}と
@code{updatedb}がコンフィグレーションされインストールされた時に決定され
ます．データベースが更新される頻度と，項目に含めるディレクトリは，
@code{updatedb}が実行される頻度と，その引数に依存します．

@c You can obtain some statistics about the databases by using
@c @samp{locate --statistics}.
@c 
@samp{locate --statistics}を使用することで，データベースの統計情報を得
ることが可能です．

@menu
* Database Locations::
* Database Formats::
* Newline Handling::
@end menu


@node Database Locations
@c @section Database Locations
@section データベースの位置

@c There can be multiple file name databases.  Users can select which
@c databases @code{locate} searches using the @code{LOCATE_PATH}
@c environment variable or a command line option.  The system
@c administrator can choose the file name of the default database, the
@c frequency with which the databases are updated, and the directories
@c for which they contain entries.  File name databases are updated by
@c running the @code{updatedb} program, typically nightly.
@c 
複数のファイル名のデータベースを存在させることが可能です．ユーザは，
@code{locate}が検索を行なうデータベースを，@code{LOCATE_PATH}環境変数や
コマンドラインオプションを使用して選択することが可能です．システム管理
者は，デフォルトのデータベースのファイル名，データベースを更新する頻度，
そして，項目に含めるディレクトリを選択することが可能です．ファイル名の
データベースは，@code{updatedb}プログラムで，通常夜に実行され更新されま
す．

@c In networked environments, it often makes sense to build a database at
@c the root of each filesystem, containing the entries for that filesystem.
@c @code{updatedb} is then run for each filesystem on the fileserver where
@c that filesystem is on a local disk, to prevent thrashing the network.
@c 
ネットワーク環境では，ファイルシステムの項目を含めながら，それぞれのルー
トファイルシステムでデータベースを構築することに意味があります．
@code{updatedb}は，ネットワークのスラッシングを避けるため，ファイルシス
テムがローカルディスクにあるファイルサーバの，それぞれのファイルシステ
ムで実行されます．@code{updatedb}に，それぞれのデータベースが含んでいる
項目のディレクトリを選択させるオプションは以下のとおりです．

@c @xref{Invoking updatedb},
@c for the description of the options to @code{updatedb}, which specify
@c which directories would each database contain entries for.
@c 
@code{updatedb}のオプションの記述で，項目を含むデータベースがあるディレ
クトリの指定は，@xref{Invoking updatedb}.

@node Database Formats
@c @section Database Formats
@section データベースの書式

@c The file name databases contain lists of files that were in particular
@c directory trees when the databases were last updated.  The file name
@c database format changed starting with GNU @code{locate} version 4.0 to
@c allow machines with different byte orderings to share the databases.  The
@c new GNU @code{locate} can read both the old and new database formats.
@c However, old versions of @code{locate} and @code{find} produce incorrect
@c results if given a new-format database.
@c 
ファイル名のデータベースには，データベースが最後に更新された時の，特定
のディレクトリツリーのファイルのリストを含まれます．ファイル名のデータ
ベースの書式変更は，異なるバイト順序を用いるマシンでも，データベースの
共有が可能となるように，GNU @code{locate}バージョン4.0から開始されまし
た．新しいGNU @code{locate}は，新旧両方のデータベースの書式を読み込むこ
とが可能です．しかし，古いバージョンの@code{locate}と@code{find}では，
新しい書式のデータベースを与えられた場合，間違った結果となります．

@c If you run @samp{locate --statistics}, the resulting summary indicates
@c the type of each locate database.  
@c 
@samp{locate --statistics}を実行した場合，要約された結果は，それぞれの
@command{locate}のデータベースの形式を示します．

@menu
* New Database Format::
* Sample Database::
* Old Database Format::
@end menu

@node New Database Format
@c @subsection New Database Format
@subsection 新しいデータベースの書式

@c @code{updatedb} runs a program called @code{frcode} to
@c @dfn{front-compress} the list of file names, which reduces the database
@c size by a factor of 4 to 5.  Front-compression (also known as
@c incremental encoding) works as follows.
@c 
@code{updatedb}は，4の要素を5にする@footnote{訳注：原文はby a factor
of 4 to 5}ことでデータベースの大きさが小さくなるように，ファイル名のリ
ストを@dfn{前部圧縮(front-compress)}するため，@code{frcode}を実行します．
前部圧縮(増分符合化としても知られている)は以下のように動作します．

@c The database entries are a sorted list (case-insensitively, for users'
@c convenience).  Since the list is sorted, each entry is likely to share a
@c prefix (initial string) with the previous entry.  Each database entry
@c begins with an offset-differential count byte, which is the additional
@c number of characters of prefix of the preceding entry to use beyond the
@c number that the preceding entry is using of its predecessor.  (The
@c counts can be negative.)  Following the count is a null-terminated ASCII
@c remainder---the part of the name that follows the shared prefix.
@c 
データベースの項目は，(ユーザの利便性のため，大文字小文字を識別しないで)
ソートされているリストです．リストはソートされているので，それぞれの項
目は，前の項目と同じ接頭辞(最初の文字列)を共有することがよくあります．
それぞれのデータベース項目はオフセットバイトの差分の数で始まっていて，
それは前の項目の更に前のものが使用している数より多くなる，前の項目に前
置される接頭辞への追加の文字数です．(数は負になることもあります．) それ
以降の数は，ヌルで終端されているASCII文字の残りです---共有している接尾
辞以降の名前の部分です．

@c If the offset-differential count is larger than can be stored in a byte
@c (+/-127), the byte has the value 0x80 and the count follows in a 2-byte
@c word, with the high byte first (network byte order).
@c 
オフセット差分数がバイト(+/-127)で保存できるものより大きい場合，バイト
の値が0x80になり，それ以下の2バイトがその数値になっていて，それはハイバ
イトを最初(ネットワークバイトの順序)にしたものを用います．

@c Every database begins with a dummy entry for a file called
@c @file{LOCATE02}, which @code{locate} checks for to ensure that the
@c database file has the correct format; it ignores the entry in doing the
@c search.
@c 
すべてのデータベースは，@file{LOCATE02}と呼ばれるダミーの項目で始まって
いて，それは，データベースファイルの書式が正しいことを確認するために，
@code{locate}が調査するものです．検索時にはその項目は無視されます．

@c Databases can not be concatenated together, even if the first (dummy)
@c entry is trimmed from all but the first database.  This is because the
@c offset-differential count in the first entry of the second and following
@c databases will be wrong.
@c 
最初の(ダミー)項目を，先頭のデータベース以外からすべて切り取っても，デー
タベースを連結させることは不可能です．これは，二番目とそれ以降の最初の
項目にあるオフセット差分数が間違ってしまうためです．

@c In the output of @samp{locate --statistics}, the new database format
@c is referred to as @samp{LOCATE02}.
@c 
@samp{locate --statistics}の出力で，新しいデータベースの書式は
@samp{LOCATE02}として参照します．

@node Sample Database
@c @subsection Sample Database
@subsection サンプルデータベース

@c Sample input to @code{frcode}:
@c 
@code{frcode}へのサンプル入力です．
@c with nulls changed to newlines:

@example
/usr/src
/usr/src/cmd/aardvark.c
/usr/src/cmd/armadillo.c
/usr/tmp/zoo
@end example

@c Length of the longest prefix of the preceding entry to share:
@c 
共有するために前置される，最も長い接頭辞の長さは以下のようになります．

@example
0 /usr/src
8 /cmd/aardvark.c
14 rmadillo.c
5 tmp/zoo
@end example

@c Output from @code{frcode}, with trailing nulls changed to newlines
@c and count bytes made printable:
@c 
最後のヌルを改行に変更し，バイトを印字可能文字に変更した場合の，
@code{frcode}からの出力は以下のようになります．

@example
0 LOCATE02
0 /usr/src
8 /cmd/aardvark.c
6 rmadillo.c
-9 tmp/zoo
@end example

@c (6 = 14 - 8, and -9 = 5 - 14)
@c 
(6 = 14 - 8，そして -9 = 5 - 14)

@node Old Database Format
@c @subsection Old Database Format
@subsection 古いデータベースの書式

@c The old database format is used by Unix @code{locate} and @code{find}
@c programs and earlier releases of the GNU ones.  @code{updatedb} produces
@c this format if given the @samp{--old-format} option.
@c 
古いデータベースの書式は，Unixの@code{locate}と@code{find}プログラム，
そして早期のGNUがリリースしたもので使用されています．@code{updatedb}は，
@samp{--old-format}オプションが与えられた場合，この書式で生成します．

@c @code{updatedb} runs programs called @code{bigram} and @code{code} to
@c produce old-format databases.  The old format differs from the new one
@c in the following ways.  Instead of each entry starting with an
@c offset-differential count byte and ending with a null, byte values from
@c 0 through 28 indicate offset-differential counts from -14 through 14.
@c The byte value indicating that a long offset-differential count follows
@c is 0x1e (30), not 0x80.  The long counts are stored in host byte order,
@c which is not necessarily network byte order, and host integer word size,
@c which is usually 4 bytes.  They also represent a count 14 less than
@c their value.  The database lines have no termination byte; the start of
@c the next line is indicated by its first byte having a value <= 30.
@c 
@code{updatedb}は，古い書式のデータベースを生成するために，
@code{bigram} と@code{code}と呼ばれるプログラムを実行します．古い書式は，
新しいものと以下の方式で異なります．オフセット差分数バイトで始まりヌル
で終るそれぞれの項目の代わりに，-14から14までのオフセット差分数を示す0
から28の値になります．それ以上の大きなオフセット差分数を示すバイト値は，
0x1e (30)で0x80ではありません．大きな数は，ホストのバイト順でソートされ，
それはネットワークバイトの順序である必要はなく，ホストのワード整数の大
きさとなっていて，それは通常4バイトです．その値が14より小さいものは表示
されません．データベースの行には終端バイトがありません．次の行の先頭は，
30より小さい値を持つバイトで示されます．

@c In addition, instead of starting with a dummy entry, the old database
@c format starts with a 256 byte table containing the 128 most common
@c bigrams in the file list.  A bigram is a pair of adjacent bytes.  Bytes
@c in the database that have the high bit set are indexes (with the high
@c bit cleared) into the bigram table.  The bigram and offset-differential
@c count coding makes these databases 20-25% smaller than the new format,
@c but makes them not 8-bit clean.  Any byte in a file name that is in the
@c ranges used for the special codes is replaced in the database by a
@c question mark, which not coincidentally is the shell wildcard to match a
@c single character.
@c 
更に，最初のダミー項目で始まる代わりに，古いデータベース書式は，ファイ
ルリストで最も一般的な128の@code{bigram}を含んでいる，256バイトの表で始
まります．@code{bigram}は調整されたバイトの組となっています．ハイビット
セットを持つデータベースのバイトは，(ハイビットがクリアされてい
る)@code{bigram}表内部の索引です．@code{bigram}とオフセット差分数の符合
化は，これらのデータベースを，新しい書式より20から25%まで小さくしますが，
8ビットクリーンにはなりません．特殊コードに使用される範囲にあるファイル
名のバイトは，データベース内では疑問符に置換され，それは，単一文字にマッ
チするシェルのワイルドカードにはマッチしません．

@c The old format therefore can not faithfully store entries with non-ASCII
@c characters. It therefore should not be used in internationalized
@c environments.
@c 
そのため古い書式では，ASCII以外の文字の項目を忠実の保存することが不可能
です．そのため，国際化環境では使用すべきではありません．

@c The output of @samp{locate --statistics} will give an incorrect count
@c of the number of filenames containing newlines or high-bit characters
@c for old-format databases.
@c 
@samp{locate --statistics}の出力は，古い書式の改行やハイビット文字を含
むファイル名の計数で間違えてしまうでしょう．

@node Newline Handling
@c @section Newline Handling
@section 改行の取り扱い

@c Within the database, filenames are terminated with a null character.
@c This is the case for both the old and the new format.  
@c 
データベースでは，ファイル名はヌル文字で終端されています．これは，古い
書式も新しい書式も同じようになっています．

@c When the new database format is being used, the compression technique
@c used to generate the database though relies on the ability to sort the
@c list of files before they are presented to @code{frcode}.
@c 
新しいデータベースの書式が使用されているとき，@code{frcode}に渡す前の，
ファイルのリストの並べ替え能力に依存する圧縮技術が，データベースの生成
に使用されています．

@c If the system's sort command allows its input list of files to be
@c separated with null characters via the @samp{-z} option, this option
@c is used and therefore @code{updatedb} and @code{locate} will both
@c correctly handle filenames containing newlines.  If the @code{sort}
@c command lacks support for this, the list of files is delimited with
@c the newline character, meaning that parts of filenames containing
@c newlines will be incorrectly sorted.  This can result in both
@c incorrect matches and incorrect failures to match.
@c 
システムのソートコマンドが，入力されるファイルのリストを@samp{-z}オプショ
ンでヌル文字で分離している場合，このオプションが使用され，そのため，
@code{updatedb}と@code{locate}は両方共，改行を含むファイル名を正しく処
理します．@code{sort}コマンドにこのサポートが無い場合，ファイルのリスト
は改行文字で分離され，つまり，改行を含むファイルの部分は間違って並べ替
えられます．結果として，正しくないマッチと，正しくない間違ったマッチの
両方が発生します．

@c On the other hand, if you are using the old database format, filenames
@c with embedded newlines are not correctly handled.  There is no
@c technical limitation which enforces this, it's just that the
@c @code{bigram} program has no been updated to support lists of
@c filenames separated by nulls.
@c 
一方，古いデータベース書式を使用している場合，改行が埋め込まれたファイ
ル名は正しく処理されません．これを強制する技術的な制限は無いので，
@code{bigram}プログラムはヌルで分離されているファイル名のリストをサポー
トするように更新されていません．

@c So, if you are using the new database format (this is the default) and
@c your system uses GNU @code{find}, newlines will be correctly handled
@c at all times.  Otherwise, newlines may not be correctly handled.
@c 
そのため，新しいデータベース書式を使用していて(これはデフォルトです)，
システムでGNU @code{find}を使用している場合，改行はいつでも正しく処理さ
れます．そうでなければ，改行は正しく処理されない可能性があります．

@node File Permissions, Reference, Databases, Top
@c @chapter File Permissions
@chapter ファイルの権限

@include perm-ja.texi

@node Reference, Security Considerations, File Permissions, Top
@c @chapter Reference
@chapter リファレンス

@c Below are summaries of the command line syntax for the programs
@c discussed in this manual.
@c 
以下は，このマニュアルで示してきたプログラムに対する，コマンドラインの
構文の概要です．

@menu
* Invoking find::
* Invoking locate::
* Invoking updatedb::
* Invoking xargs::
@end menu

@node Invoking find, Invoking locate, , Reference
@c @section Invoking @code{find}
@section @code{find}の呼び出し

@example
find @r{[-H] [-L] [-P]} @r{[}@var{file}@dots{}@r{]} @r{[}@var{expression}@r{]}
@end example

@c @code{find} searches the directory tree rooted at each file name
@c @var{file} by evaluating the @var{expression} on each file it finds in
@c the tree.
@c 
@code{find}は，それぞれのファイル名@var{file}をルートとするディレクトリ
ツリーを，そのツリーで見つかったそれぞれのファイル上で@var{expression}
を評価しながら検索します．

@c The options @samp{-H}, @samp{-L} or @samp{-P} may be specified at the
@c start of the command line (if none of these is specified, @samp{-P} is
@c assumed).  The arguments after these are a list of files or
@c directories that should be searched.
@c 
オプションの@samp{-H}，@samp{-L}，または@samp{-P}は，コマンドラインの最
初に指定してもかまいません(これらが指定されていない場合，@samp{-P}が仮
定されます)．これらの後の引数は，検索するファイルやディレクトリのリスト
です．

@c This list of files to search is followed by a list of expressions
@c describing the files we wish to search for.  The first part of the
@c expression is recognised by the fact that it begins with @samp{-},
@c @samp{(}, @samp{)}, @samp{,}, or @samp{!}.  Any arguments after it are
@c the rest of the expression.  If no paths are given, the current
@c directory is used.  If no expression is given, the expression
@c @samp{-print} is used.
@c 
検索するファイルのリストには，検索したいファイルの記述式のリストが続き
ます．式の最初の部分は，@samp{-}，@samp{(}, @samp{)}，@samp{,}，または
@samp{!}で始まるという事で認識されます．それ以降のあらゆる引数は式の残
りとみなします．パスが与えられていない場合，現在のディレクトリが使用さ
れます．式が与えられていない場合，式@samp{-print}が使用されます．

@c @code{find} exits with status 0 if all files are processed successfully,
@c greater than 0 if errors occur.
@c 
@code{find}は，すべてのファイルが正しく処理された場合は0のステータスで，
エラーが発生した場合は0より大きなステータスで終了します．

@c Three options can precede the list of path names.  They determine the
@c way that symbolic links are handled.
@c 
パス名に三つのオプションを前置することが可能です．それらはシンボリック
リンクの扱い方を決定します．

@table @code
@item -P
@c Never follow symbolic links (this is the default), except in the case
@c of the @samp{-xtype} predicate.
@c 
@samp{-xtype}指示語以外で，シンボリックリンクをたどりません(これがデフォ
ルトです)．
@item -L
@c Always follow symbolic links, except in the case of the @samp{-xtype}
@c predicate.
@c 
@samp{-xtype}指示語以外で，常にシンボリックリンクをたどります．
@item -H
@c Follow symbolic links specified in the list of paths to search, or
@c which are otherwise specified on the command line.
@c 
検索パスのリストで指定されている，または，コマンドラインで指定されてい
るシンボリックリンクをたどります．
@end table

@c If @code{find} would follow a symbolic link, but cannot for any reason
@c (for example, because it has insufficient permissions or the link is
@c broken), it falls back on using the properties of the symbolic link
@c itself.  @ref{Symbolic Links} for a more complete description of how
@c symbolic links are handled.
@c 
@code{find}がシンボリックリンクをたどるつもりが，なんらかの理由で不可能
な場合(例えば，十分な権限が無いとか，リンクが壊れているとか)，シンボリッ
クリンク自身の属性を使用するようになります．シンボリックリンクの取り扱
いの完全な記述は，@ref{Symbolic Links}.

@c @xref{Primary Index}, for a summary of all of the tests, actions, and
@c options that the expression can contain.  If the expression is
@c missing, @samp{-print} is assumed.
@c 
式に含めることが可能なすべてのテスト，アクション，そしてオプションの概
要は，@xref{Primary Index}.  式が無い場合，@samp{-print}が仮定されます．

@c @code{find} also recognizes two options for administrative use:
@c 
@code{find}は，管理上で使用するため，二つのオプションも認識します．

@table @code
@item --help
@c Print a summary of the command-line argument format and exit.
@c 
コマンドライン引数の書式の概要を出力し，終了します．
@item --version
@c Print the version number of @code{find} and exit.
@c 
@code{find}のバージョンナンバーを出力し，終了します．
@end table

@menu
* Warning Messages::
@end menu

@node Warning Messages,,, Invoking find
@c @subsection Warning Messages
@subsection 警告メッセージ

@c If there is an error on the @code{find} command line, an error message
@c is normally issued.  However, there are some usages that are
@c inadvisable but which @code{find} should still accept.  Under these
@c circumstances, @code{find} may issue a warning message.  By default,
@c warnings are enabled only if @code{find} is being run interactively
@c (specifically, if the standard input is a terminal).  Warning messages
@c can be controlled explicitly by the use of options on the command
@c line:
@c 
@code{find}のコマンドラインにエラーがある場合，通常エラーメッセージが出
力されます．しかし，勧められないが@code{find}は受け入れる使用方法もあり
ます．この状況では，@code{find}は警告メッセージを出力します．デフォルト
で，@code{find}が対話的に実行されている場合だけ(特に，標準入力が端末の
場合)，警告メッセージが利用可能です．警告メッセージはコマンドラインオプ
ションで，明示的に制御することが可能です．

@table @code
@item -warn
@c Issue warning messages where appropriate.
@c 
適切なところで警告メッセージを発行します．
@item -nowarn
@c Do not issue warning messages.
@c 
警告メッセージを発行しません．
@end table

@c These options take effect at the point on the command line where they
@c are specified.  Therefore if you specify @samp{-nowarn} at the end of
@c the command line, you will not see warning messages for any problems
@c occurring before that.  The warning messages affected by the above
@c options are triggered by:
@c 
これらのオプションは，コマンドラインで指定されている場所で効果がありま
す．このため，@samp{-nowarn}をコマンドラインの最後に指定している場合，
それ以前に発生した問題の警告メッセージは表示されません．上記のオプショ
ンで変更される警告メッセージは，以下のものに影響します．

@itemize @minus
@item
@c Use of the @samp{-d} option which is deprecated; please use
@c @samp{-depth} instead, since the latter is POSIX-compliant.
@c 
推奨されない@samp{-d}オプションの使用．POSIX互換の@samp{-depth}を代わり
に使用してください．
@item
@c Use of the @samp{-ipath} option which is deprecated; please use
@c @samp{-iwholename} instead.
@c 
推奨されない@samp{-ipath}オプションの使用．@samp{-iwholename}を代わりに
使用してください．
@item 
@c Specifying an option (for example @samp{-mindepth}) after a non-option
@c (for example @samp{-type} or @samp{-print}) on the command line.
@c 
コマンドラインのオプション以外(例えば，@samp{-type}や@samp{-print})の後
でのオプション(例えば@samp{-mindepth})の指定．
@end itemize

@c The default behaviour above is designed to work in that way so that
@c existing shell scripts which use such constructs don't generate
@c spurious errors, but people will be made aware of the problem.
@c 
上記のデフォルトの動作は，そのような構成の既存のシェルスクリプトで重大
なエラーを生成しない方法で，ユーザが問題に気付くように動作するよう設計
されています．

@c Some warning messages are issued for less common or more serious
@c problems, and so cannot be turned off:
@c 
警告メッセージには，あまり一般的ではない，またはより重要な問題で出力さ
れ，それらは停止できません．

@itemize @minus
@item
@c Use of an unrecognised backslash escape sequence with @samp{-fprintf}
@c 
@samp{-fprintf}での，認識できないバックスラッシュ・エスケープ・シーケン
スの使用．
@item
@c Use of an unrecognised formatting directive with @samp{-fprintf}
@c 
@samp{-fprintf}での，認識できない書式指示語の使用．
@end itemize

@node Invoking locate, Invoking updatedb, Invoking find, Reference
@c @section Invoking @code{locate}
@section @code{locate}の呼び出し

@example
locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{}
@end example

@table @code
@item --all
@itemx -A
@c Print only names which match all non-option arguments, not those matching
@c one or more non-option arguments.
@c 
オプションではない引数の，一つまたはそれ以上ではなく，すべての引数にマッ
チした名前だけを出力します．

@item --basename
@itemx -b
@c The specified pattern is matched against just the last component of
@c the name of the file in the locate database.  This last component is
@c also called the ``base name''.  For example, the base name of
@c @file{/tmp/mystuff/foo.old.c} is @file{foo.old.c}.  If the pattern
@c contains metacharacters, it must match the base name exactly.  If not,
@c it must match part of the base name.
@c 
@code{locate}データベースのファイル名の最後の構成要素に対してマッチする
パターンを指定します．最後の構成要素は，``ベース名(base name)''と呼ばれ
ます．例えば，@file{/tmp/mystuff/foo.old.c}のベース名は
@file{foo.old.c}になります．パターンにメタ文字が含まれている場合，ベー
ス名に正確にマッチする必要があります．そうでない場合，ベース名の一部が
マッチする必要があります．

@item --count
@itemx -c
@c Instead of printing the matched filenames, just print the total 
@c number of matches we found, unless @samp{--print} (@samp{-p}) is also
@c present.
@c 
@samp{--print} (@samp{-p})も指定されていない限り，マッチしたファイル名
を出力する代わりに，見つかったマッチ数だけを出力します．

@item --database=@var{path}
@itemx -d @var{path}
@c Instead of searching the default file name database, search the file
@c name databases in @var{path}, which is a colon-separated list of
@c database file names.  You can also use the environment variable
@c @code{LOCATE_PATH} to set the list of database files to search.  The
@c option overrides the environment variable if both are used.  Empty
@c elements in @var{path} (that is, a leading or trailing colon, or two
@c colons in a row) are taken to stand for the default database.
@c A database can be supplied on stdin, using @samp{-} as an element
@c of @samp{path}. If more than one element of @samp{path} is @samp{-},
@c later instances are ignored (but a warning message is printed).
@c 
デフォルトのファイル名のデータベースを検索する代わりに，@var{path}にあ
るファイル名のデータベースを検索し，それはコロンで分離されたデータベー
スファイル名のリストになります．環境変数@code{LOCATE_PATH}を検索するデー
タベースファイルに設定する方法も使用可能です．両方使用されている場合，
オプションは環境変数に優先します．@var{path}の空の項目(すなわち，先頭と
末尾のコロンや，一行に二つのコロン)は，デフォルトのデータベースとして受
け取ります．@samp{path}の項目で@samp{-}を使用することで，データベースは
標準入力からも提供することが可能です．@samp{path}の一つ以上の@samp{-}が
構成要素にある場合，後のものが無視されます(しかし，警告メッセージは出力
されます)．

@item --existing
@itemx -e
@c Only print out such names which currently exist (instead of such names
@c which existed when the database was created).  Note that this may slow
@c down the program a lot, if there are many matches in the database.
@c The way in which broken symbolic links are treated is affected by the
@c @samp{-L}, @samp{-P} and @samp{-H} options.
@c 
(データベースが作成されたときに存在していた名前の代わりに)現在，存在し
ている名前だけ出力されます．データベースのマッチが多い場合，プログラム
が非常に遅くなることに注意してください．壊れたシンボリックリンクの扱い
方は，@samp{-L}，@samp{-P}，そして@samp{-H}オプションが影響します．

@item --non-existing
@itemx -E
@c Only print out such names which currently do not exist (instead of
@c such names which existed when the database was created).  Note that
@c this may slow down the program a lot, if there are many matches in the
@c database.  The way in which broken symbolic links are treated is
@c affected by the @samp{-L}, @samp{-P} and @samp{-H} options.
@c 
(データベースが作成されたときに存在していた名前の代わりに)現在，存在し
ていない名前だけ出力されます．データベースのマッチが多い場合，プログラ
ムが非常に遅くなることに注意してください．壊れたシンボリックリンクの扱
い方は，@samp{-L}，@samp{-P}，そして@samp{-H}オプションが影響します．

@item --follow
@itemx -L
@c If testing for the existence of files (with the @samp{-e} or @samp{-E}
@c options), consider broken symbolic links to be non-existing.  This is
@c the default.
@c 
(@samp{-e}や@samp{-E}オプションで)ファイルの存在を調査する場合，壊れて
いるシンボリックリンクは存在しないものとみなします．これはデフォルトで
す．

@item --nofollow
@itemx -P
@itemx -H
@c If testing for the existence of files (with the @samp{-e} or @samp{-E}
@c options), treat broken symbolic links as if they were existing files.
@c The @samp{-H} form of this option is provided purely for similarity
@c with @code{find}; the use of @samp{-P} is recommended over @samp{-H}.
@c 
(@samp{-e}や@samp{-E}オプションで)ファイルの存在を調査する場合，壊れて
いるシンボリックリンクはファイルが存在しているかのように処理します．こ
のオプションの@samp{-H}の形式は，@code{find}に類似しているために提供さ
れています．@samp{-H}ではなく@samp{-P}の使用が推奨されます．

@item --ignore-case
@itemx -i
@c Ignore case distinctions in both the pattern and the file names.
@c 
パターンとファイル名の両方で，大文字小文字の違いを無視します．

@item --limit=N
@itemx -l N
@c Limit the number of results printed to N.  If you use the
@c @samp{--count} option, the value printed will never be larger than
@c this limit.
@c 
結果として出力する数を@var{N}に制限します．@samp{--count}オプションを使
用している場合，出力される値はこの制限より大きくなりません．

@item --mmap
@itemx -m
@c Accepted but does nothing.  The option is supported only to provide
@c compatibility with BSD's @code{locate}.
@c 
受け入れられますが何もしません．このオプションは，BSDの@code{locate}と
の互換性を提供するためだけにサポートされています．

@item --null
@itemx -0
@c Results are separated with the ASCII NUL character rather than the
@c newline character.  To get the full benefit of the use of this option,
@c use the new locate database format (that is the default anyway).
@c 
結果を，改行文字ではなく，ASCIIのヌル文字で分離します．このオプションの
利便性を完全に利用するため，新しいデータベース書式を使用してください(デ
フォルトです)．

@item --print
@itemx -p
@c Print search results when they normally would not, because of the presence
@c of @samp{--statistics} (@samp{-S}) or @samp{--count} (@samp{-c}).
@c 
@samp{--statistics} (@samp{-S})や@samp{--count} (@samp{-c})のために，通
常は出力されない検索結果を出力します．

@item --wholename
@itemx -w
@c The specified pattern is matched against the whole name of the file in
@c the locate database.  If the pattern contains metacharacters, it must
@c match exactly.  If not, it must match part of the whole file name.
@c This is the default behaviour.
@c 
指定されたパターンはを，@command{locate}データベースのファイル名全体に
対してマッチさせます．パターンにメタ文字が含まれている場合，正確にマッ
チする必要があります．そうでない場合，ファイル名全体にマッチする必要が
あります．これはデフォルトの動作です．

@item --regex
@itemx -r
@c Instead of using substring or shell glob matching, the pattern
@c specified on the command line is understood to be a POSIX extended
@c regular expression.  Filenames from the locate database which match
@c the specified regular expression are printed (or counted).  If the
@c @samp{-i} flag is also given, matching is case-insensitive.  Matches
@c are performed against the whole path name, and so by default a
@c pathname will be matched if any part of it matches the specified
@c regular expression.  The regular expression may use @samp{^} or
@c @samp{$} to anchor a match at the beginning or end of a pathname.
@c 
部分文字列やシェルのglobマッチを使用する代わりに，コマンドラインで指定
されているパターンをPOSIXの拡張正規表現として解釈します．指定されている
正規表現にマッチする@command{locate}データベースのファイル名が出力(また
はカウント)されます．@samp{-i}フラグも与えられている場合，大文字小文字
を区別しません．マッチは，パス名全体に対して実行され，デフォルトではパ
ス名は指定されている正規表現のマッチする部分にマッチします．正規表現で
は@samp{^}や@samp{$}を，パス名の最初や最後にマッチするものとして使用し
ても構いません．

@item --stdio
@itemx -s
@c Accepted but does nothing.  The option is supported only to provide
@c compatibility with BSD's @code{locate}.
@c 
受け入れられますが何もしません．このオプションは，BSDの@code{locate}と
の互換性を提供するためだけにサポートされています．

@item --statistics
@itemx -S
@c Print some summary information for each locate database.  No search is
@c performed unless non-option arguments are given.
@c 
それぞれの@command{locate}データベースの概要情報を出力しません．オプショ
ン以外の引数が与えられていない限り，検索は実行されません．

@item --help
@c Print a summary of the options to @code{locate} and exit.
@c 
@code{locate}へのオプションの概要を出力し，終了します．

@item --version
@c Print the version number of @code{locate} and exit.
@c 
@code{locate}のバージョンナンバーを出力し，終了します．
@end table

@node Invoking updatedb, Invoking xargs, Invoking locate, Reference
@c @section Invoking @code{updatedb}
@section @code{updatedb}の呼び出し

@example
updatedb @r{[}@var{option}@dots{}@r{]}
@end example

@table @code
@item --findoptions='@var{OPTION}@dots{}'
@c Global options to pass on to @code{find}.
@c The environment variable @code{FINDOPTIONS} also sets this value.
@c Default is none.
@c 
@code{find}渡す大域的なオプションです．環境変数@code{FINDOPTIONS}でもこ
の値を設定します．デフォルトはありません．

@item --localpaths='@var{path}@dots{}'
@c Non-network directories to put in the database.
@c Default is @file{/}.
@c 
データベースに書き込むネットワーク以外のディレクトリです．デフォルトは
@file{/}です．

@item --netpaths='@var{path}@dots{}'
@c Network (NFS, AFS, RFS, etc.) directories to put in the database.
@c The environment variable @code{NETPATHS} also sets this value.
@c Default is none.
@c 
データベースに書き込むネットワーク(NFS，AFS，RFS等)のディレクトリです．
環境変数@code{NETPATHS}でもこの値を設定します．デフォルトはありません．

@item --prunepaths='@var{path}@dots{}'
@c Directories to omit from the database, which would otherwise be
@c included.  The environment variable @code{PRUNEPATHS} also sets this
@c value.  Default is @file{/tmp /usr/tmp /var/tmp /afs}.  The paths are
@c used as regular expressions (with @code{find ... -regex}, so you need
@c to specify these paths in the same way that @code{find} will encounter
@c them.  This means for example that the paths must not include trailing
@c slashes.
@c 
データベースに書き込まないディレクトリで，それ以外は書き込まれます．環
境変数@code{PRUNEPATHS}でもこの値を設定します．デフォルトは，
@file{/tmp /usr/tmp /var/tmp /afs}です．パスは正規表現として
(@code{find ...  -regex}のように)使用されるので，これらのパスを
@code{find}で行うのと同じ方法で指定する必要があります．例えば，パスに最
後のスラッシュを含めてはならないことを意味します．

@item --prunefs='@var{path}@dots{}'
@c File systems to omit from the database, which would otherwise be included.
@c Note that files are pruned when a file system is reached;
@c Any file system mounted under an undesired file system will be
@c ignored.
@c The environment variable @code{PRUNEFS} also sets this value.
@c Default is @file{nfs NFS proc}.
@c 
データベースに書き込まないファイルシステムで，それ以外は書き込まれます．
当該ファイルシステム以下のファイルが除去されることに注意してください．
期待されないファイルシステム以下にあるファイルシステムはすべて無視され
ます．環境変数@code{PRUNEFS}でもこの値を設定します．デフォルトは
@file{nfs NFS proc}です．

@item --output=@var{dbfile}
@c The database file to build.
@c Default is system-dependent, but typically @file{/usr/local/var/locatedb}.
@c 
構築されるデータベースファイルです．デフォルトはシステムに依存しますが，
通常は@file{/usr/local/var/locatedb}です．

@item --localuser=@var{user}
@c The user to search the non-network directories as, using @code{su}.
@c Default is to search the non-network directories as the current user.
@c You can also use the environment variable @code{LOCALUSER} to set this user.
@c 
@code{su}を使用して，ネットワーク以外のディレクトリを検索するユーザです．
デフォルトは，カレントユーザとしてネットワーク以外のディレクトリを検索
します．このユーザを設定するために，環境変数@code{LOCALUSER}を使用する
ことも可能です．

@item --netuser=@var{user}
@c The user to search network directories as, using @code{su}.
@c Default is @code{daemon}.
@c You can also use the environment variable @code{NETUSER} to set this user.
@c 
@code{su}を使用しながら，ネットワークディレクトリを検索するユーザです．
デフォルトは@code{daemon}です．このユーザを設定するために，環境変数
@code{NETUSER}を使用することも可能です．

@item --old-format
@c Generate a locate database in the old format, for compatibility with
@c versions of @code{locate} other than GNU @code{locate}.  Using this
@c option means that @code{locate} will not be able to properly handle
@c non-ASCII characters in filenames (that is, filenames containing
@c characters which have the eighth bit set, such as many of the
@c characters from the ISO-8859-1 character set).
@c 
GNU @code{locate}より古いバージョンの@code{locate}との互換性のため，
@command{locate}データベースを古い書式で出力します．このオプションを使
用することは，ファイル名でASCII以外の文字を適切に処理することができなく
なる事を意味します(それは，ISO-8859-1文字集合の多くの文字のように，八番
目のビットが設定されている文字を含むファイル名です)．

@item --help
@c Print a summary of the command-line argument format and exit.
@c 
コマンドライン引数の書式の概要を出力して終了します．

@item --version
@c Print the version number of @code{updatedb} and exit.
@c 
@code{updatedb}のバージョン番号を出力して終了します．
@end table

@node Invoking xargs, ,  Invoking updatedb, Reference
@c @section Invoking @code{xargs}
@section @code{xargs}の呼び出し

@example
xargs @r{[}@var{option}@dots{}@r{]} @r{[}@var{command} @r{[}@var{initial-arguments}@r{]}@r{]}
@end example

@c @code{xargs} exits with the following status:
@c 
@code{xargs}は，以下のステータスで終了します．

@table @asis
@item 0
@c if it succeeds
@c 
成功した場合．
@item 123
@c if any invocation of the command exited with status 1-125
@c 
1-125のステータスで終了されたコマンドの呼出があった場合．
@item 124
@c if the command exited with status 255
@c 
コマンドが255のステータスで終了した場合．
@item 125
@c if the command is killed by a signal
@c 
コマンドがシグナルでキルされた場合．
@item 126
@c if the command cannot be run
@c 
コマンドが実行不可能な場合．
@item 127
@c if the command is not found
@c 
コマンドが見つからない場合．
@item 1
@c if some other error occurred.
@c 
その他のエラーが発生した場合．
@end table

@table @code
@item --arg-file@r{=@var{inputfile}}
@itemx -a @r{=@var{inputfile}}
@c Read names from the file @var{inputfile} instead of standard input.
@c 
標準入力の代わりに，ファイル@var{inputfile}から名前を読み込みます．

@item --null
@itemx -0
@c Input filenames are terminated by a null character instead of by
@c whitespace, and the quotes and backslash are not special (every
@c character is taken literally).  Disables the end of file string, which
@c is treated like any other argument.
@c 
入力ファイル名を空白の代わりにヌル文字で終端し，引用符とバックスラッシュ
は特別扱いされません(すべての文字は，文字通りに扱われます)．引数として
扱われるような，ファイル文字列の終端部分を使用不可能にします．

@item --eof@r{[}=@var{eof-str}@r{]}
@itemx -e@r{[}@var{eof-str}@r{]}
@c Set the end of file string to @var{eof-str}.  If the end of file string
@c occurs as a line of input, the rest of the input is ignored.  If
@c @var{eof-str} is omitted, there is no end of file string.  If this
@c option is not given, the end of file string defaults to @samp{_}.
@c 
ファイル文字列の終端を@var{eof-str}に設定します．ファイル文字列の終端が，
入力行に現れた場合，残りの入力は無視されます．@var{eof-str}が省略されて
いる場合，ファイル文字列の終端はありません．このオプションが与えられて
いない場合，ファイル文字列の終端はデフォルトで@samp{_}になります．

@item --help
@c Print a summary of the options to @code{xargs} and exit.
@c 
@code{xargs}のオプションの概要を出力して，終了します．

@item --replace@r{[}=@var{replace-str}@r{]}
@itemx -i@r{[}@var{replace-str}@r{]}
@c Replace occurrences of @var{replace-str} in the initial arguments with
@c names read from standard input.  Also, unquoted blanks do not
@c terminate arguments; instead, the input is split at newlines only.
@c If @var{replace-str} is omitted, it defaults to @samp{@{@}}
@c (like for @samp{find -exec}).  Implies @samp{-x} and @samp{-l 1}.
@c 
最初から存在する引数にある@var{replace-str}を，標準入力から読み込まれた
名前に置換します．また，引用符で囲まれていない空白は，引数の終りになり
ません．代わりに，入力は改行のみで分割されます．@var{replace-str}が省略
されている場合，デフォルトは@samp{@{@}} になります(@samp{find -exec}に
似ています)．@samp{-x}と@samp{-l 1}を暗黙に指定します．

@item --max-lines@r{[}=@var{max-lines}@r{]}
@itemx -l@r{[}@var{max-lines}@r{]}
@c Use at most @var{max-lines} nonblank input lines per command line;
@c @var{max-lines} defaults to 1 if omitted.  Trailing blanks cause an
@c input line to be logically continued on the next input line, for the
@c purpose of counting the lines.  Implies @samp{-x}.
@c 
最大@var{max-lines}の空白でない入力行を，コマンドラインごとに使用します．
後置されている空白は，入力行を論理的に次の行に続かせ，それは行を数える
目的のためです．@samp{-x}を暗黙に指定します．

@item --max-args=@var{max-args}
@itemx -n @var{max-args}
@c Use at most @var{max-args} arguments per command line.  Fewer than
@c @var{max-args} arguments will be used if the size (see the @samp{-s}
@c option) is exceeded, unless the @samp{-x} option is given, in which case
@c @code{xargs} will exit.
@c 
最大@var{max-args}の引数を，コマンドラインごとに使用します．
@var{max-args}より引数が少ないときは，サイズ(@samp{-s}オプションを参照
して下さい)を越ていても，@samp{-x}オプションが与えられていない場合はそ
れが使用され，それ以外では@code{xargs}は終了します．

@item --interactive
@itemx -p
@c Prompt the user about whether to run each command line and read a line
@c from the terminal.  Only run the command line if the response starts
@c with @samp{y} or @samp{Y}.  Implies @samp{-t}.
@c 
それぞれのコマンドラインを実行するかどうか，ユーザにプロンプトを表示し，
端末から一行読み込みます．応答が@samp{y}や@samp{Y}で始まっている場合の
み，コマンドラインを実行します．@samp{-t}を暗黙に指定します．

@item --no-run-if-empty
@itemx -r
@c If the standard input does not contain any nonblanks, do not run the
@c command.  By default, the command is run once even if there is no input.
@c 
標準入力が全く空行を含まない場合，コマンドを実行しません．デフォルトで，
コマンドは入力が無い場合でも一度実行されます．

@item --max-chars=@var{max-chars}
@itemx -s @var{max-chars}
@c Use at most @var{max-chars} characters per command line, including the
@c command and initial arguments and the terminating nulls at the ends of
@c the argument strings.
@c 
コマンドと最初からある引数と引数文字列の最後の終端のヌルを含め，最大
@var{max-chars}文字をコマンドラインごとに使用します．

@item --verbose
@itemx -t
@c Print the command line on the standard error output before executing
@c it.
@c 
コマンドラインを実行前に標準エラー出力に出力します．

@item --version
@c Print the version number of @code{xargs} and exit.
@c 
@code{xargs}のバージョンナンバーを出力し，終了します．

@item --exit
@itemx -x
@c Exit if the size (see the @samp{-s} option) is exceeded.
@c 
サイズ(@samp{-s}オプションを参照して下さい)を越えた場合，終了します．

@item --max-procs=@var{max-procs}
@itemx -P @var{max-procs}
@c Run up to @var{max-procs} processes at a time; the default is 1.  If
@c @var{max-procs} is 0, @code{xargs} will run as many processes as
@c possible at a time.
@c 
一度に@var{max-procs}プロセスまで実行します．デフォルトは1です．
@var{max-procs}が0の場合，@code{xargs}は一度に実行可能な最大数のプロセ
スを実行します．
@end table

@node Security Considerations, Error Messages, Reference, Top
@c @chapter Security Considerations
@chapter セキュリティの考慮

@c Security considerations are important if you are using @code{find} or
@c @code{xargs} to search for or process files that don't belong to you
@c or over which other people have control.  Security considerations
@c relating to @code{locate} may also apply if you have files which you
@c may not want others to see.   
@c 
@code{find}や@code{xargs}を，所有者ではない，または他の人の制御下にある
ファイルの検索や処理で使用している場合，セキュリティを考慮することは重
要です．@code{locate}でも，他人に見られたくないファイルがある場合，関係
するセキュリティの考慮が適用されます．

@c In general, the most severe forms of security problems affecting
@c @code{find} and related programs are where third parties can bring
@c about a situation where those programs allow them to do something
@c they would normally not be able to do.  This is called @emph{privilege
@c elevation}.  This might include deleting files they would not normally
@c be able to delete.  It is also common for the system to periodically
@c invoke @code{find} for housekeeping purposes.  These invocations of
@c @code{find} are particularly problematic from a security point of view
@c as these are often invoked by the superuser and search the whole file
@c system hierarchy.  The severity of any associated problem depends on
@c what the system is going to do with the output of @code{find}.
@c 
一般的に，@code{find}と関連プログラムに影響する最も厳しいセキュリティの
問題の形態は，第三者がそれらのプログラムによって，通常は実行できない何
かを実行することが可能になる状況になりうることです．これは，@emph{特権
の昇格(privilege elevation)}と呼ばれています．これは，通常は削除不可能
なファイルの削除も含まれます．システムが定期的に，ごみ掃除の目的で
@code{find}を呼び出すのも一般的です．このような@code{find}の呼び出しは，
スーパーユーザから呼び出され，ファイルシステムの全階層を検索するので，
セキュリティの観点からは特に問題になります．関連する問題の重大さは，
@code{find}の出力を元にシステムが実施することに依存します．

@menu
* Levels of Risk::      What is your level of exposure to security problems?
* Security Considerations for find::  Security problems with find
* Security Considerations for xargs:: Security problems with xargs
* Security Considerations for locate:: Security problems with locate
* Security Summary:: That was all very complex, what does it boil down to?
@end menu


@node Levels of Risk
@c @section Levels of Risk
@section リスクのレベル

@c There are some security risks inherent in the use of @code{find},
@c @code{xargs} and (to a lesser extent) @code{locate}.  The severity of
@c these risks depends on what sort of system you are using:
@c 
@code{find}，@code{xargs}，そして(程度は小さい)@code{locate}の使用にお
いて，もともとセキュリティのリスクがあります．リスクの重大さは，使用し
ているシステムの種類に依存します．

@table @strong
@c @item High risk
@item 高いリスク
@c Multi-user systems where you do not control (or trust) the other
@c users, and on which you execute @code{find}, including areas where
@c those other users can manipulate the filesystem (for example beneath
@c @file{/home} or @file{/tmp}).
@c 
他のユーザを制御(または信用)できない，他のユーザが操作可能なファイルシ
ステムの領域(例えば，@file{/home}や@file{/tmp}以下)を含めて@code{find}
を実行するマルチユーザシステム．

@c @item Medium Risk
@item 中程度のリスク
@c Systems where the actions of other users can create filenames chosen
@c by them, but to which they don't have access while @code{find} is
@c being run.  This access might include leaving programs running (shell
@c background jobs, @code{at} or @code{cron} tasks, for example).  On
@c these sorts of systems, carefully written commands (avoiding use of
@c @samp{-print} for example) should not expose you to a high degree of
@c risk.  Most systems fall into this category.
@c 
他のユーザのアクションで任意のファイル名を作成することが可能で，
@code{find}の実行中アクセスできないシステム．このアクセスには，放置され
たプログラムの実行(例えば，バックグラウンドのジョブ，@code{at}や
@code{cron}のタスク)が含まれます．この種のシステムでは，注意して書かれ
たコマンド(例えば，@samp{-print}の使用を避ける)は，高度な危険にならない
でしょう．ほとんどのシステムはこのカテゴリに分類されます．

@c @item Low Risk
@item 低いリスク
@c Systems to which untrusted parties do not have access, cannot create
@c filenames of their own choice (even remotely) and which contain no
@c security flaws which might enable an untrusted third party to gain
@c access.  Most systems do not fall into this category because there are
@c many ways in which external parties can affect the names of files that
@c are created on your system.  The system on which I am writing this for
@c example automatically downloads software updates from the Internet;
@c the names of the files in which these updates exist are chosen by
@c third parties@footnote{Of course, I trust these parties to a large
@c extent anyway, because I install software provided by them; I choose
@c to trust them in this way, and that's a deliberate choice}.
@c 
信用できない連中がアクセスしない，自分で選んだファイル名を(リモートで
も)作成できない，信用できない第三者のアクセスを増加させるようなセキュリ
ティの欠陥が無いシステム．ほとんどのシステムでは，外部の人がシステムに
作成するファイルの名前に影響する方法がたくさんあるので，このカテゴリに
分類されません．例えば，これを書いているシステム自動的にソフトウェアを
インターネットからダウンロードし，ソフトウェアを更新します．これらの更
新されるファイルには名前は，第三者が選択したものが存在しています
@footnote{もちろん，インストールするソフトウェアを提供しているので，こ
れらの連中を信用しています．こうして信用するものを選択するしていて，ま
あ良く考えて選択しているということです}．
@end table

@c In the discussion above, ``risk'' denotes the likelihood that someone
@c can cause @code{find}, @code{xargs}, @code{locate} or some other
@c program which is controlled by them to do something you did not
@c intend.  The levels of risk suggested do not take any account of the
@c consequences of this sort of event.  That is, if you operate a ``low
@c risk'' type system, but the consequences of a security problem are
@c disastrous, then you should still give serious thought to all the
@c possible security problems, many of which of course will not be
@c discussed here -- this section of the manual is intended to be
@c informative but not comprehensive or exhaustive.   
@c 
上記の``リスク''とは，@code{find}，@code{xargs}，@code{locate}，または，
それらのプログラムから制御される，他のプログラムで，期待しないことが実
行され得ることを意味します．提案したリスクのレベルは，事態の重大さを考
慮したものではありません．つまり，``低リスク''のシステムで処理をしてい
ても，セキュリティの問題の重大さは悲惨なものとなり，ここで議論されてい
ないものもたくさんありますが，すべての可能性のあるセキュリティの問題を
真面目に考えるべきです -- マニュアルのこのセクションの目的は情報提供で
すが，総合的でも徹底的でもありません．

@c If you are responsible for the operation of a system where the
@c consequences of a security problem could be very important, you should
@c do two things:-
@c 
セキュリティの問題が非常に重要なシステムでの操作に責任がある場合，二つ
のことを行うべきです．

@enumerate
@c @item Define a security policy which defines who is allowed to do what
@c on your system
@c 
@item
システム上で，誰が何を行っても良いかということを決定する，セキュリティ
ポリシーを定義してください．

@c @item Seek competent advice on how to enforce your policy, detect
@c breaches of that policy, and take account of any potential problems
@c that might fall outside the scope of your policy
@c 
@item
ポリシーの執行，ポリシーの侵害の検出，さらに，ポリシーのスコープ以外に
ついても可能性のある問題の考慮について，手法に関するアドバイスを十分に
探してください．
@end enumerate


@node Security Considerations for find
@c @section Security Considerations for find
@section @command{find}のセキュリティの考慮

@c Some of the actions @code{find} might take have a direct effect;
@c these include @code{-exec} and @code{-delete}.  However, it is also
@c common to use @code{-print} explicitly or implicitly, and so if
@c @code{find} produces the wrong list of filenames, that can also be a
@c security problem; consider the case for example where @code{find} is
@c producing a list of files to be deleted.
@c 
@code{find}のアクションには，直接影響するものがあります．これには
@code{-exec}と@code{-delete}が含まれます．しかし，@code{-print}の明示的
または暗黙の使用も一般的で，@code{find}は間違ったファイル名のリストを生
成し，セキュリティの問題になり得ます．例えば，ファイルを削除するために
@code{find}が生成したファイルのリストを考えてみてください．

@c We normally assume that the @code{find} command line expresses the
@c file selection criteria and actions that the user had in mind -- that
@c is, the command line is ``trusted'' data.  
@c 
我々は通常，@code{find}のコマンドラインはファイルの選択の基準と，ユーザ
が考えているアクションを表現していると仮定します -- つまり，コマンドラ
インは``信用できる''データだということです．

@c From a security analysis point of view, the output of @code{find}
@c should be correct; that is, the output should contain only the names
@c of those files which meet the user's criteria specified on the command
@c line.  This applies for the @code{-exec} and @code{-delete} actions;
@c one can consider these to be part of the output.
@c 
セキュリティの分析の観点から，@code{find}の外部は正しくありません．つま
り，出力にはユーザがコマンドラインで指定した基準にマッチしたファイルの
名前だけが含まれているべきです．これを，@code{-exec}と@code{-delete}ア
クションに適用します．これらも出力の一部だと考える人もいます．

@c On the other hand, the contents of the filesystem can be manipulated
@c by other people, and hence we regard this as ``untrusted'' data.  This
@c implies that the @code{find} command line is a filter which converts
@c the untrusted contents of the filesystem into a correct list of output
@c files.   
@c 
一方，ファイルシステムの内容は他の人も操作可能なので，我々はこれを``信
用できない''データだとみなします．つまり，@code{find}コマンドラインは，
信用できないファイルシステムの内容を，出力ファイルの正しいリストに変換
するフィルタであることを暗示しています．

@c The filesystem will in general change while @code{find} is searching
@c it; in fact, most of the potential security problems with @code{find}
@c relate to this issue in some way.
@c 
ファイルシステムは，一般的に，@code{find}の検索中に変更されます．実際に，
@code{find}がセキュリティの問題となる可能性のほとんどは，この問題にある
程度関連します．

@c Race conditions are a general class of security problem where the
@c relative ordering of actions taken by @code{find} (for example) and
@c something else are important@footnote{This is more or less the
@c definition of the term ``race condition''} .  
@c 
競合状態は，(例えば) @code{find}に渡されるアクションの順番に関連するセ
キュリティの問題に分類され，それ以外が重要です@footnote{これは，用語
``競合状態(race condition)''のだいたいの定義になります}．

@c Typically, an attacker might move or rename files or directories in
@c the hope that an action might be taken against a a file which was not
@c normally intended to be affected.  Alternatively, this sort of attack
@c might be intended to persuade @code{find} to search part of the
@c filesystem which would not normally be included in the search
@c (defeating the @code{-prune} action for example).  
@c 
一般的に，普通は影響するはずがないファイルに対して，攻撃者が期待するア
クションでファイルやディレクトリの移動や削除を行います．また，このよう
なの攻撃は，@code{find}に，普通は検索されない(例えば，@code{-prune}アク
ションで抑止)ファイルシステムの一部を検索するようにしむけます．

@menu
* Changing the Current Working Directory::
* Race Conditions with -exec::
* Race Conditions with -print and -print0::
@end menu


@node Changing the Current Working Directory
@c @subsection Changing the Current Working Directory
@subsection 現在の作業ディレクトリの変更

@c As find searches the file system, it finds subdirectories and then
@c searches within them by changing its working directory.  First,
@c @code{find} notices a subdirectory.  It then decides if that
@c subdirectory meets the criteria for being searched; that is, any
@c @samp{-xdev} or @samp{-prune} expressions are taken into account.  The
@c @code{find} program will then change working directory and proceed to
@c search the directory.
@c 
@command{find}がファイルシステムを検索するとき，サブディレクトリを探し，
作業ディレクトリを変更しながら検索します．最初に，@code{find}はサブディ
レクトリに注目します．サブディレクトリが検索する基準にあっている場合，
それが決定されます．つまり，@samp{-xdev}や@samp{-prune}式は考慮されます．
@code{find}プログラムは，作業ディレクトリを変更し，ディレクトリの検索を
進めていきます．

@c A race condition attack might take the form that once the checks
@c relevant to @samp{-xdev} and @samp{-prune} have been done, an attacker
@c might rename the directory that was being considered, and put in its
@c place a symbolic link that actually points somewhere else.  
@c 
競合状態の攻撃とは，@samp{-xdev}と@samp{-prune}に関連して一度調査された
後，攻撃者は考えられるディレクトリの名前を変更し，その場所を別の場所を
示しているシンボリックリンクを配置するといった形態になります．

@c The idea behind this attack is to fool @code{find} into going into the
@c wrong directory.  This would leave @code{find} with a working
@c directory chosen by an attacker, bypassing any protection apparently
@c provided by @samp{-xdev} and @samp{-prune}, and any protection
@c provided by being able to @emph{not} list particular directories on
@c the @code{find} command line.  This form of attack is particularly
@c problematic if the attacker can predict when the @code{find} command
@c will be run, as is the case with @code{cron} tasks for example.
@c 
この攻撃のは以後にある考えとは，@code{find}が間違ったディレクトリに行っ
てしまう程度に愚かであるということです．これは，攻撃者が選択した作業ディ
レクトリで@code{find}を続け，@samp{-xdev}と@samp{-prune}で明示的に提供
された保護機能と，@code{find}コマンドラインにリストアップされた特定のディ
レクトリ@emph{以外を}利用できなくすることで提供される保護機能をバイパス
するということです．この形態の攻撃は，攻撃者が@code{find}コマンドを実行
するときが予測可能な場合，例えば@code{cron}のタスク等で，特に問題になり
ます．

@c GNU @code{find} has specific safeguards to prevent this general class
@c of problem.  The exact form of these safeguards depends on the
@c properties of your system.  
@c 
GNU @code{find}には，この一般に分類される問題を避けるための，固有のセー
フガードがあります．これらのセーフガードの正確な形態は，システムの特性
に依存します．

@menu 
* O_NOFOLLOW::                     Safely changing directory using fchdir().
* Systems without O_NOFOLLOW::     Checking for symbolic links after chdir().
* Working with automounters::      These can look like race condition exploits
* Problems with dead NFS servers:: If you don't have O_NOFOLLOW, this is a problem.
@end menu

@node O_NOFOLLOW
@subsubsection O_NOFOLLOW 

@c If your system supports the O_NOFOLLOW flag @footnote{GNU/Linux
@c (kernel version 2.1.126 and later) and FreeBSD (3.0-CURRENT and later)
@c support this} to the @code{open(2)} system call, @code{find} uses it
@c when safely changing directory.  The target directory is first opened
@c and then @code{find} changes working directory with the
@c @code{fchdir()} system call.  This ensures that symbolic links are not
@c followed, preventing the sort of race condition attack in which use
@c is made of symbolic links.
@c 
システムが@code{open(2)}システムコールのO_NOFOLLOWフラグをサポートする
場合@footnote{GNU/Linux (kernel version 2.1.126 以降)そしてFreeBSD
(3.0-CURRENT 以降)はこれをサポートします}，@code{find}は安全にディレク
トリを変更するとき使用します．目的となるディレクトリは最初にオープンさ
れ，@code{find}は@code{fchdir()}システムコールで作業ディレクトリを変更
します．これで，シンボリックリンクは確実にたどられなくなり，シンボリッ
クリンクの作成を使用する競合状態の攻撃の類は避けられます．

@c If for any reason this approach does not work, @code{find} will fall
@c back on the method which is normally used if O_NOFOLLOW is not
@c supported.
@c 
なんらかの理由でこの手法が動作しない場合，@code{find}はO_NOFOLLOWがサポー
トされていない状況で一般的に使用される手法に戻ります．

@c You can tell if your system supports O_NOFOLLOW by running 
@c 
以下を実行することで，システムがO_NOFOLLOWをサポートしてかどうか分かり
ます．

@example
find --version
@end example

@c This will tell you the version number and which features are enabled.
@c For example, if I run this on my system now, this gives:
@c 
これで，バージョン番号と利用可能な機能が表示されます．例えば，私のシス
テムでは以下のようになります．
@example
GNU find version 4.2.18-CVS
Features enabled: D_TYPE O_NOFOLLOW(enabled)
@end example

@c Here, you can see that I am running a version of find which was built
@c from the development (CVS) code prior to the release of
@c findutils-4.2.18, and that the D_TYPE and O_NOFOLLOW features are
@c present.  O_NOFOLLOW is qualified with ``enabled''.  This simply means
@c that the current system seems to support O_NOFOLLOW.  This check is
@c needed because it is possible to build find on a system that defines
@c O_NOFOLLOW and then run it on a system that ignores the O_NOFOLLOW
@c flag.  We try to detect such cases at startup by checking the
@c operating system and version number; when this happens you will see
@c ``O_NOFOLLOW(disabled)'' instead.
@c 
ここで，実行している@command{find}のバージョンがfindutils-4.2.18の前の
リリースの開発(CVS)コードからビルドされたことと，D_TYPEとO_NOFOLLOWの機
能が存在することが分かります．O_NOFOLLOWは``enabled''であると分かります．
これは，現在のシステムでO_NOFOLLOWをサポートしているらしいことを，簡単
に示しています．システムでビルドされた@command{find}がO_NOFOLLOWを定義
していて，O_NOFOLLOWフラグを無視するシステムで実行されている可能性があ
るので，この調査は必要です．我々は，開始時にオペレーティングシステムと
バージョン番号を調査することで，そのような状況の検出を試みます．このよ
うな状況では，``O_NOFOLLOW(disabled)''を代わりに見ることになります．


@node Systems without O_NOFOLLOW
@c @subsubsection Systems without O_NOFOLLOW
@subsubsection O_NOFOLLOWが無いシステム

@c The strategy for preventing this type of problem on systems that lack
@c support for the O_NOFOLLOW flag is more complex.  Each time
@c @code{find} changes directory, it examines the directory it is about
@c to move to, issues the @code{chdir()} system call, and then checks
@c that it has ended up in the subdirectory it expected.  If not, an
@c error message is issued and @code{find} exits immediately.  This
@c method prevents filesystem manipulation attacks from persuading
@c @code{find} to search parts of the filesystem it did not intend.
@c However, we heve to take special steps in order not to unnecessarily
@c conclude that there is a problem with any ``automount'' mount points.
@c 
O_NOFOLLOWフラグのサポートがが無いシステムで，この形式の問題を避ける戦
略はより複雑です．@code{find}がディレクトリを変更するたびに，移動先のディ
レクトリを調査し，@code{chdir()}システムコールを発行し，期待されている
サブディレクトリまで調査します．それ以外の場合，エラーメッセージを出力
し，@code{find}はただちに終了します．この手法は，@code{find}に意図しな
いファイルシステムの部分を検索させる，ファイルシステム操作の攻撃を妨げ
ます．しかし，``automount''のマウントポイントで問題となる無駄な断定を行
わないよう，特殊なステップが必要になります．

@node Working with automounters
@c @subsubsection Working with automounters
@subsubsection オートマウントでの作業

@c Where an automounter is in use it can be the case that the use of the
@c @code{chdir()} system call can itself cause a new filesystem to be
@c mounted at that point.  On systems that do not support O_NOFOLLOW,
@c this will cause @code{find}'s security check to fail.  
@c 
オートマウントを使用中は，@code{chdir()}システムコールの使用で，マウン
トポイントにマウントされた新しいファイルシステムに移動することが可能に
なる状況です．O_NOFOLLOWをサポートしていないシステムでは，@code{find}の
セキュリティ調査に失敗します．

@c However, this does not normally represent a security problem (since
@c the automounter configuration is normally set up by the system
@c administrator).  Therefore, if the @code{chdir()} sanity check fails,
@c @code{find} will check to see if a new filesystem has been mounted at
@c the current directory; if so, @code{find} will issue a warning message
@c and continue.
@c 
しかし，通常はセキュリティの問題にはなりません(通常はシステム管理者がオー
トマウントの構成を設定しているためです)．そのため，@code{chdir()}の正統
性の調査が失敗する場合，@code{find}は新しいファイルシステムが現在のディ
レクトリにマウントされているかどうかを調査します．その場合，
@code{find}は警告メッセージを出力し，動作を続けます．

@c To make this solution work, @code{find} reads the list of mounted
@c filesystems at startup, and again when the sanity check fails.  It
@c compares the two lists to find out if the directory it has moved into
@c has just been mounted.
@c 
この解決法を動作させるため，@code{find}はマウントされているファイルシス
テムのリストを，開始時と，正統性の調査に失敗したときに読み込みます．マ
ウントされたときからディレクトリが移動されているかどうかを調べるため，
二つのリストを比較します．

@node Problems with dead NFS servers
@c @subsubsection Problems with dead NFS servers
@subsubsection NFSサーバが落ちている問題

@c Examining every mount point on the system has a downside too.  In
@c general, @code{find} will be used to search just part of the
@c filesystem.  However, @code{find} examines every mount point.  If the
@c system has a filesystem mounted on an unresponsive NFS server,
@c @code{find} will hang, waiting for the NFS server to respond.  Worse,
@c it does this even if the affected mount point is not within the
@c directory tree that find would have searched anyway.
@c 
システムのマウントポイントごとに調査することは，非常に悪い方向です．一
般的に，@code{find}は，ファイルシステムの一部だけを検索します．しかし，
@code{find}はすべてのマウントポイントを調査します．システムに，信用でき
ないNFSサーバをマウントしたファイルシステムがある場合，@code{find}はハ
ングアップし，NFSサーバが応答するまで待ち続けます．更に悪いことに，マウ
ントポイントが，@code{find}が検索しないディレクトリツリーにあっても影響
します．

@c This is very unfortunate.  However, this problem only affects systems
@c that have no support for O_NOFOLLOW.  As far as I can tell, it is not
@c possible on such systems to fix all three problems (the race
@c condition, the false-alarm at automount mount points, and the hang at
@c startup if there is a dead NFS server) at once.  If you have some
@c ideas about how @code{find} could do this better, please send email to
@c the @email{bug-findutils@@gnu.org} mailing list.
@c 
これは非常に不幸です．しかし，この問題は，O_NOFOLLOWをサポートしていな
いシステムだけに影響します．私が知る限り，そのようなシステムで，これら
三つのすべての問題を(競合状態，オートマウントの間違った警告，NFSサーバ
がダウンしていた場合のハングアップ)一度に修正することは不可能です．
@code{find}で可能なより良いアイデアがあれば，メーリングリスト
@email{bug-findutils@@gnu.org}に電子メールを送って下さい．

@node Race Conditions with -exec
@c @subsection Race Conditions with -exec
@subsection -execでの競合状態

@c The @samp{-exec} action causes another program to be run.  It is
@c passed the name of the file which is being considered at the time.
@c The invoked program will then - normally - perform some action on that
@c file.  Once again, there is a race condition which can be exploited
@c here.  We shall take as a specific example the command
@c 
@samp{-exec}アクションでは別のプログラムを実行します．その時にファイル
名を渡します．そしてプログラムを呼び出します -通常- ファイルになんらか
のアクションを実施します．ここでも，利用可能な競合状態があります．我々
は，コマンド例を以下のように指定します．

@example 
find /tmp -path /tmp/umsp/passwd -exec /bin/rm
@end example

@c In this simple example, we are identifying just one file to be deleted
@c and invoking @code{/bin/rm} to delete it.  A problem exists because
@c there is a time gap between the point where @code{find} decides that
@c it needs to process the @samp{-exec} action and the point where the
@c @code{/bin/rm} command actually issues the @code{unlink()} system
@c call.  Within this time period, an attacker can rename the
@c @file{/tmp/umsp} directory, replacing it with a symbolic link to
@c @file{/etc}.   There is no way for @code{/bin/rm} to determine that it
@c is working on the same file that @code{find} had in mind.   Once the
@c symbolic link is in place, the attacker has persuaded @code{find} to
@c cause the deletion of the @file{/etc/passwd} file, which is not the
@c effect intended by the command which was actually invoked.  
@c 
この見本例では，我々は削除する一つのファイルを識別し，削除するために
@code{/bin/rm}を呼び出しています．@code{find}が@samp{-exec}アクションを
処理する必要があることを決定する時点と，@code{/bin/rm}コマンドが実際に
@code{unlink()}システムコールを実施する時点に時間差があるので，問題が存
在します．このとき，攻撃者は@file{/tmp/umsp}ディレクトリの名前を変更し，
@file{/etc}へのシンボリックリンクに置換することが可能です．@code{find}
が想定しているのと同じファイルで，@code{/bin/rm}を実施していることを調
査する方法はありません．一度シンボリックリンクが配置されると，実際に呼
び出したコマンドが意図している効果ではなく，攻撃者は@code{find}に
@file{/etc/passwd}ファイルを削除させるようだますこともあります．

@c One possible defence against this type of attack is to modify the
@c behaviour of @samp{-exec} so that the @code{/bin/rm} command is run
@c with the argument @file{./passwd} and a suitable choice of working
@c directory.  This would allow the normal sanity check that @code{find}
@c performs to protect against this form of attack too.  Unfortunately,
@c this strategy cannot be used as the POSIX standard specifies that the
@c current working directory for commands invoked via @samp{-exec} must
@c be the same as the current working directory from which @code{find}
@c was invoked.   This means that the @samp{-exec} action is inherently
@c insecure and can't be fixed.   
@c 
この形態の攻撃から守る一つの可能性として，@samp{-exec}の動作を
@code{/bin/rm}コマンドを@file{./passwd}引数で，適切なワーキングディレク
トリで実行するようにする方法です．これは，この形式の攻撃から守るために
@code{find}が実行する，通常の健全性の調査でも可能です．残念ながら，この
戦略はPOSIX標準で指定されている物では利用不可能で，そこでは
@samp{-exec}でコマンドが呼び出されたカレントワーキングディレクトリと，
@code{find}が呼び出されたカレントワーキングディレクトリは同じにする必要
があります．つまり，@samp{-exec}アクションは本質的にセキュリティが低く，
修正不可能だということを意味します．

@c GNU @code{find} implements a more secure variant of the @samp{-exec}
@c action, @samp{-execdir}.  The @samp{-execdir} action
@c ensures that it is not necessary to dereference subdirectories to
@c process target files.  The current directory used to invoke programs
@c is the same as the directory in which the file to be processed exists
@c (@file{/tmp/umsp} in our example, and only the basename of the file to
@c be processed is passed to the invoked command, with a @samp{./}
@c prepended (giving @file{./passwd} in our example).
@c 
GNU @code{find}では，@samp{-exec}アクション等よりセキュリティが高い
@samp{-execdir}を実装しています．@samp{-execdir}アクションは，ターゲッ
トファイルを処理するため，サブディレクトリを参照しないようにする必要が
なくなるようにします．プログラムの呼び出しで使用されるカレントディレク
トリが，処理するファイルが存在するディレクトリと同じ(例では
@file{/tmp/umsp})になっていて，処理するファイルのベース名が呼び出しコマ
ンドに渡され，それには@samp{./}が(例では@file{./passwd})前置されます．

@c The @samp{-execdir} action refuses to do anything if the current
@c directory is included in the @var{$PATH} environment variable.  This
@c is necessary because @samp{-execdir} runs programs in the same
@c directory in which it finds files -- in general, such a directory
@c might be writable by untrusted users.  For similar reasons,
@c @samp{-execdir} does not allow @samp{@{@}} to appear in the name of
@c the command to be run.
@c 
@samp{-execdir}アクションは，カレントディレクトリが@var{$PATH}環境変数
に含まれている場合，すべての動作を拒否します．これは，@samp{-execdir}が
ファイルが見つかったディレクトリと同じディレクトリのプログラムを実行す
るので必要になります -- 一般的に，そのようなディレクトリは信用できない
ユーザは書き込みません．同じような理由で，@samp{-execdir}は実行するコマ
ンド名の@samp{@{@}}を許可しません．

@node Race Conditions with -print and -print0
@c @subsection Race Conditions with -print and -print0
@subsection -printと-print0の競合状態

@c The @samp{-print} and @samp{-print0} actions can be used to produce a
@c list of files matching some criteria, which can then be used with some
@c other command, perhaps with @code{xargs}.   Unfortunately, this means
@c that there is an unavoidable time gap between @code{find} deciding
@c that one or more files meet its criteria and the relevant command
@c being executed.  For this reason, the @samp{-print} and @samp{-print0}
@c actions are just as insecure as @samp{-exec}.
@c 
@samp{-print}と@samp{-print0}アクションは，幾つかの条件にマッチしたファ
イルリストを生成するために利用することが可能で，そのリストは他のコマン
ド，おそらく@code{xargs}で使用することが可能です．残念ながら，これには，
@code{find}が条件に合致した一つ以上のファイルを見つけたときと，関連する
コマンドが実行されるときの，やむおえない時間差が存在することを意味しま
す．このため，@samp{-print}と@samp{-print0}のアクションは，
@samp{-exec}同様にセキュリティが高くありません．

@c In fact, since the construction 
@c 
実際に，以下を考えてみます．

@example
find ....   -print | xargs ....
@end example

@c does not cope correctly with newlines or other ``white space'' in
@c filenames, and copes poorly with filenames containing quotes, the
@c @samp{-print} action is less secure even than @samp{-print0}.
@c 
これは，改行やその他の``空白''がファイル名にある場合，正しく対処できま
せんし，引用符を含むファイル名への対応もいまいちですし，@samp{-print}ア
クションは，@samp{-print0}ほどセキュリティが高くありません．

@comment  node-name,  next,  previous,  up
@comment @node Security Considerations for xargs
@node Security Considerations for xargs
@c @section Security Considerations for @code{xargs}
@section @code{xargs}のセキュリティの検討

@c The description of the race conditions affecting the @samp{-print}
@c action of @code{find} shows that @code{xargs} cannot be secure if it
@c is possible for an attacker to modify a filesystem after @code{find}
@c has started but before @code{xargs} has completed all its actions.
@c 
@code{find}の@samp{-print}による競合状態の影響の記述は，@code{find}の開
始後かつ@code{xargs}がすべてのアクションを完了する前に攻撃者がファイル
システムを変更する可能性がある場合，@code{xargs}でセキュリティを高くす
ることが不可能なことを示しています．

@c However, there are other security issues that exist even if it is not
@c possible for an attacker to have access to the filesystem in real
@c time.  Firstly, if it is possible for an attacker to create files with
@c names of their own choice on the filesystem, then @code{xargs} is
@c insecure unless the @samp{-0} option is used.  If a file with the name
@c @file{/home/someuser/foo/bar\n/etc/passwd} exists (assume that
@c @samp{\n} stands for a newline character), then @code{find ... -print}
@c can be persuaded to print three separate lines:
@c 
しかし，攻撃者がリアルタイムでファイルシステムにアクセスできない場合で
さえも，セキュリティの問題が他にも存在しています．第一に，攻撃者がファ
イルシステム上に，自分が選んだ名前でファイルを作成可能な場合，
@code{xargs}は@samp{-0}オプションを使用しない限りセキュリティが低くなり
ます．@file{/home/someuser/foo/bar\n/etc/passwd}というファイル名が存在
する場合(@samp{\n}が改行文字を意味すると仮定します)，@code{find ...
-print}では，間違って三行に分割した行を出力するはずです．

@example
/home/someuser/foo/bar

/etc/passwd
@end example

@c If it finds a blank line in the input, @code{xargs} will ignore it.
@c Therefore, if some action is to be taken on the basis of this list of
@c files, the @file{/etc/passwd} file would be included even if this was
@c not the intent of the person running find.  There are circumstances in
@c which an attacker can use this to their advantage.  The same
@c consideration applies to filenames containing ordinary spaces rather
@c than newlines, except that of course the list of filenames will no
@c longer contain an ``extra'' newline.
@c 
入力に改行がある場合，@code{xargs}はそれを無視します．このため，このファ
イルリストを元に実施されるアクションには，これが@command{find}を実行し
ている人が期待していない@file{/etc/passwd}ファイルが含まれます．攻撃者
がこの優位性を使用可能な状況も存在します．同じ状況は，ファイル名に改行
ではなく普通の空行が存在する場合も存在し，もちろん，ファイル名のリスト
には``余分な''改行は含まれていません．

@c This problem is an unavoidable consequence of the default behaviour of
@c the @code{xargs} command, which is specified by the POSIX standard.
@c The only ways to avoid this problem are either to avoid all use of
@c @code{xargs} in favour for example of @samp{find -exec} or (where
@c available) @samp{find -execdir}, or to use the @samp{-0} option, which
@c ensures that @code{xargs} considers filenames to be separated by ASCII
@c NUL characters rather than whitespace.  However, useful though this
@c option is, the POSIX standard does not make it mandatory.
@c 
この問題は，@code{xargs}コマンドのデフォルトの動作，つまりPOSIX標準で指
定された動作の結果から回避することができません．この問題を避ける方法は，
@code{xargs}の使用を避け，より好ましい@samp{find -exec}や(利用可能であ
れば)@samp{find -execdir}を使用したり，@code{xargs}にファイル名が空白で
はなくASCIIのNUL文字で分離していると理解させる@samp{-0}オプションを使用
することだけです．しかし，このオプションは役に立ちますが，POSIXの標準で
は必須とされていません．

@comment  node-name,  next,  previous,  up
@node Security Considerations for locate
@c @section Security Considerations for @code{locate}
@section @code{locate}のセキュリティの検討

@c It is fairly unusual for the output of @code{locate} to be fed into
@c another command.  However, if this were to be done, this would raise
@c the same set of security issues as the use of @samp{find ... -print}.
@c Although the problems relating to whitespace in filenames can be
@c resolved by using @code{locate}'s @samp{-0} option, this still leaves
@c the race condition problems associated with @samp{find ... -print0}.
@c There is no way to avoid these problems in the case of @code{locate}.
@c 
@code{locate}の出力を他のコマンドに渡すことは滅多にありません．しかし，
そうする場合は@samp{find ... -print}の使用と同じようなセキュリティの問
題が生じるでしょう．しかし，ファイル名の空白に依存する問題は，
@code{locate}の@samp{-0}オプションで解決することが可能ですが，これでも
@samp{find ... -print0}に関連する競合状態の問題は残ります．
@code{locate}では，これらの問題を避ける方法がありません．

@node Security Summary
@c @section Summary
@section 概要

@c Where untrusted parties can create files on the system, or affect the
@c names of files that are created, all uses for @code{find},
@c @code{locate} and @code{xargs} have known security problems except the
@c following:
@c 
信用できない第三者が，システム上にファイルを作成できたり，作成したファ
イル名に化如することができる場合，@code{find}，@code{locate}，そして
@code{xargs}の使用時には，以下以外のセキュリティの問題を知っておいてく
ださい．

@table @asis
@item Informational use only
@c Uses where the programs are used to prepare lists of filenames upon which no further action will ever be taken.
@c 
プログラムが前もって準備されているファイル名のリストを使用し，それ以上
のアクションを実施しないように使用する．

@item -delete 
@c Use of the @samp{-delete} action to delete files which meet
@c specified criteria
@c 
指定した条件に合致したファイルを削除する@samp{-delete}アクションを使用
する．

@item -execdir 
@c Use of the @samp{-execdir} action where the @env{PATH}
@c environment variable contains directories which contain only trusted
@c programs. 
@c 
@env{PATH}環境変数が，信用されたプログラムだけが含まれているディレクト
リとなっている状況で，@samp{-execdir}アクションを使用する．
@end table

@comment  node-name,  next,  previous,  up
@node Error Messages, Primary Index, Security Considerations, Top
@c @chapter Error Messages
@chapter エラーメッセージ

@c This section describes some of the error messages you might get from
@c @code{find}, @code{xargs}, or @code{locate}, explains them and in some
@c cases provides advice as to what you should do about this.
@c 
このセクションでは，@code{find}，@code{xargs}，または@code{locate}から
得られるエラーメッセージの説明，為すべきことへのアドバイスを記述します．

@c This manual is written in English.  The GNU findutils software
@c features translated error messages for many languages.  For this
@c reason where possible we try to make the error messages produced by
@c the programs self-explanatory.  This approach avoids asking people to
@c figure out which English-language error message the test they actually
@c saw might correspond to. Error messages which are self-explanatory
@c will not normally be described or discussed in this document.  For
@c those messages which are discussed in this document, only the
@c English-language version of the message will be listed.
@c 
このマニュアルは英語で書かれています．GNU findutilsソフトウェアはエラー
メッセージを多くの言語に翻訳されています．このためできるだけ我々は，プ
ログラムに自明のことでエラーメッセージを生成させようと思います．この手
法は，英語のエラーメッセージに対応する別のものを実際には見ることになる
人々に，理解してもらうようお願いすることが難しくなります．通常，自明の
エラーメッセージは記述しませんし，このドキュメントでも議論しません．こ
のドキュメントで議論しているメッセージとして，英後のバージョンのメッセー
ジだけリストアップしています．

@menu
* Error Messages From find::
* Error Messages From xargs::
* Error Messages From locate::
* Error Messages From updatedb::
@end menu

@node Error Messages From find, Error Messages From xargs, , Error Messages
@c @section Error Messages From find
@section findのエラーメッセージ

@table @samp
@item invalid predicate `-foo'
@c This means that the @code{find} command line included something that
@c started with a dash or other special character.  The @code{find}
@c program tried to interpret this as a test, action or option, but
@c didn't recognise it.  If you intended it to be a test, check what you
@c specified against the documentation.  If, on the other hand, the
@c string is the name of a file which has been expanded from a wildcard
@c (for example because you have a @samp{*} on the command line),
@c consider using @samp{./*} or just @samp{.} instead.
@c 
これは，@code{find}のコマンドラインにダッシュやその他の特殊文字で開始さ
れるものが含まれていることを意味します．@code{find}プログラムはこれを，
テスト，アクション，またはオプションとして解釈しようとしますが，認識は
しません．テストを試みる場合，指定しているものについてドキュメントを調
査して下さい．一方，文字列がワイルドカードを展開したファイル名の場合(例
えば，コマンドラインに@samp{*}がある場合)，@samp{./*}や@samp{.}を代わり
に使用していると考慮します．

@item unexpected extra predicate
@c This usually happens if you have an extra bracket on the command line
@c (for example @samp{find . -print \)}).
@c 
コマンドラインに余分な括弧がある場合(例えば，@samp{find . -print \)})，
通常はこうなります．

@item Warning: filesystem /path/foo has recently been mounted
@itemx Warning: filesystem /path/foo has recently been unmounted
@c These messages might appear when @code{find} moves into a directory
@c and finds that the device number and inode are different to what it
@c expected them to be.  If the directory @code{find} has moved into is
@c on an NFS filesystem, it will not issue this message, because
@c @code{automount} frequently mounts new filesystems on directories as
@c you move into them (that is how it knows you want to use the
@c filesystem).  So, if you do see this message, be wary --
@c @code{automount} may not have been responsible.  Consider the
@c possibility that someone else is manipulating the filesystem while
@c @code{find} is running.  Some people might do this in order to mislead
@c @code{find} or persuade it to look at one set of files when it thought
@c it was looking at another set.
@c 
これらのメッセージは，@code{find}がディレクトリに移動し，デバイス番号と
inodeが期待したものと異なるものが見つかったときに出力されます．
@code{find}が移動したディレクトリがNFSファイルシステムの場合，
@code{automount}は新しいファイルシステムを移動先のディレクトリにマウン
トすることが多いので(つまり，使用したいファイルシステムを知る方法です)，
このメッセージは出力されません．そのため，このメッセージが出力される場
合は油断しないでください -- @code{automount}が信用できない可能性があり
ます．他の誰かが@code{find}の実行中にファイルシステムを捜査している可能
性を検討してください．@code{find}を迷わせたり，別のファイル集合を探して
いるときに，それもファイルの集合だとみせかけたい人もいます．

@item /path/foo changed during execution of find (old device number 12345, new device number 6789, filesystem type is <whatever>) [ref XXX]
@c This message is issued when @code{find} changes directory and ends up
@c somewhere it didn't expect to be.  This happens in one of two
@c circumstances.  Firstly this happens when ``automount'' does its thing
@c on a system where @code{find} doesn't know how to determine what the
@c current set of mounted filesystems is
@c 
このメッセージは，@code{find}がディレクトリを変更し，期待しない場所に移
動したときに出力されます．これは二つの状況のいずれかになります．最初の
ものは，``オートマウント''で，@code{find}がマウントされているファイルシ
ステムの現在の場所を決定する方法を知らないときに生じます．

@c Secondly, this can happen when the device number of a directory
@c appears to change during a change of current directory, but
@c @code{find} is moving up the filesystem hierarchy rather than down it.
@c In order to prevent @code{find} wandering off into some unexpected
@c part of the filesystem, we stop it at this point.
@c 
二番目は，@code{find}がファイルシステムの階層を降りるのではなく上がって
行くときに，ディレクトリのデバイス番号がカレントディレクトリの変更中に
変わるとき生じます．@code{find}がファイルシステムの期待しない部分に迷い
込まないように，我々はこの時点で停止します．

@item Don't know how to use getmntent() to read `/etc/mtab'.  This is a bug.
@c This message is issued when a problem similar to the above occurs on a
@c system where @code{find} doesn't know how to figure out the current
@c list of mount points.  Ask for help on @email{bug-findutils@@gnu.org}.
@c 
このメッセージは，@code{find}が現在のマウントポイントのリストを知る方法
が分からないシステムで上記と同じように出力されます．
@email{bug-findutils@@gnu.org}でたずねてください．

@item /path/foo/bar changed during execution of find (old inode number 12345, new inode number 67893, filesystem type is <whatever>) [ref XXX]"),
@c This message is issued when @code{find} changes directory and
@c discovers that the inode number of that directory once it's got there
@c is different to the inode number that it obtained when it examined the
@c directory some time previously.  This normally means that while
@c @code{find} has been deep in a directory hierarchy doing something
@c time consuming, somebody has moved the one of the parent directories
@c to another location in the same filesystem.  This may have been done
@c maliciously, or may not.  In any case, @code{find} stops at this point
@c in order to avoid traversing parts of the filesystem that it wasn't
@c intended to.  You can use @code{ls -li} or @code{find /path -inum
@c 12345 -o -inum 67893} to find out more about what has happened.
@c 
このメッセージは，@code{find}がディレクトリを変更したとき，ディレクトリ
のinode番号が以前取得したinode番号と異なる場合に出力されます．これは通
常，@code{find}がディレクトリ階層の深いところに長時間いて，他の人が親ディ
レクトリを同じファイルシステムの別の場所に移動したことを意味します．こ
れは，悪意があったり無かったりします．この状況では，思いがけないファイ
ルシステムの矛盾を避けるため，その時点で@code{find}は停止します．生じた
ことを理解するため，@code{ls -li}や@code{find /path -inum 12345 -o
-inum 67893}を実行することが可能です．

@item sanity check of the fnmatch() library function failed.
@c Please submit a bug report.  You may well be asked questions about
@c your system, and if you compiled the @code{findutils} code yourself,
@c you should keep your copy of the build tree around.  The likely
@c explanation is that your system has a buggy implementation of
@c @code{fnmatch} that looks enough like the GNU version to fool
@c @code{configure}, but which doesn't work properly.
@c 
バグの報告をしてください．@code{findutils}のコードを自分でコンパイルし
た場合，ビルドツリーのコピーを保持したまま，システムの問題を質問しても
かまいません．同様の解釈として，GNUバージョンの@code{configure}に問題が
あるように思われますが，システムの@code{fnmatch}にバグがあるということ
で，恐らく正しく動かないでしょう．

@item cannot fork
@c This normally happens if you use the @code{-exec} action or a
@c something similar (@code{-ok} and so forth) but the system has run out
@c of free process slots.  This is either because the system is very busy
@c and the system has reached its maximum process limit, or because you
@c have a resource limit in place and you've reached it.  Check the
@c system for runaway processes (if @code{ps} still works).  Some process
@c slots are normally reserved for use by @samp{root}.
@c 
@code{-exec}アクションや，似たようなもの(@code{-ok}など)を使用していて，
システムがフリーのプロセススロットを使いきった場合に，通常これが発生し
ます．また，システムが非常にビジーでシステムの最大プロセスの制限に到達
したり，リソースの制限に到達したことも考えられます．暴走したプロセスを
システムで調査してください(@code{ps}が動作すればですが)．プロセススロッ
トには，@samp{root}の利用に予約されているものもあります．

@item some-program terminated by signal 99
@c Some program which was launched via @code{-exec} or similar was killed
@c with a fatal signal.  This is just an advisory message.
@c 
@code{-exec}やそれに似たもので起動されたプログラムは，異常終了のシグナ
ルでキルされるものもあります．これは，それを報告するだけのメッセージで
す．
@end table

@node Error Messages From xargs, Error Messages From locate, Error Messages From find, Error Messages
@c @section Error Messages From xargs
@section xargsのエラーメッセージ

@table @samp
@item environment is too large for exec
@c This message means that you have so many environment variables set
@c (or such large values for them) that there is no room within the
@c system-imposed limits on program command-line argument length to
@c invoke any program.  I'm sure you did this deliberately.  Please try
@c unsetting some environment variables, or exiting the current shell.
@c 
このメッセージは環境変数が設定されすぎて(または，大きな値になっていて)
プログラムを呼び出すプログラムのコマンドラインの引数の長さに関するシス
テムの制限によって，余裕が無いことを意味します．これを意識的に行ってい
るかどうかを確かめたいと思います．環境変数を未設定状態にしたり，現在の
シェルを終了したりしてみてください．

@item can not fit single argument within argument list size limit
@c You are using the @samp{-i} option and @code{xargs} doesn't have
@c enough space to build a command line because it has read in a really
@c large item and it doesn't fit.  You can probably work around this
@c problem with the @samp{-s} option, but the default size is pretty
@c large.  You must be trying pretty hard to break @code{xargs}.
@c 
@samp{-i}オプションを使用していて，@code{xargs}のコマンドラインが非常に
大きな項目があり，適切に実施できないほどになっていて，コマンドラインを
作成する空間が十分に無いことを意味します．この問題は@samp{-s}オプション
で回避できると思いますが，デフォルトのサイズは非常に大きいものです．
@code{xargs}を壊すぐらいに大きいものを試していることでしょう．

@item cannot fork
@c See the description of the similar message for @code{find}.
@c 
@code{find}の同様のメッセージの記述を参照してください．

@item <program>: exited with status 255; aborting
@c When a command run by @code{xargs} exits with status 255, @code{xargs}
@c is supposed to stop.  If this is not what you intended, wrap the
@c program you are trying to invoke in a shell script which doesn't
@c return status 255.
@c 
@code{xargs}が実行するコマンドが255のステータスで終了したとき，
@code{xargs}は停止することになっています．こうすることを期待しない場合，
プログラムをシェルスクリプトから呼び出して，255のステータスを返さないよ
うなラッパーにしてください．

@item <program>: terminated by signal 99
@c See the description of the similar message for @code{find}.
@c 
@code{find}の同様のメッセージの記述を参照してください．
@end table

@node Error Messages From locate, Error Messages From updatedb, Error Messages From xargs, Error Messages
@c @section Error Messages From locate
@section locateのエラーメッセージ

@table @samp
@item warning: database `/usr/local/var/locatedb' is more than 8 days old
@c The @code{locate} program relies on a database which is periodically
@c built by the @code{updatedb} program.  That hasn't happened in a long
@c time.  To fix this problem, run @code{updatedb} manually.  This can
@c often happen on systems that are generally not left on, so the periodic
@c ``cron'' task which normally does this doesn't get a chance to run.
@c 
@code{locate}プログラムは，@code{updatedb}によって前もって構築されたデー
タベースに依存します．しばらく実行しないとそうなります．この問題を修正
するために，@code{updatedb}を手動で実行してください．これは，システムか
らしばらく離れていたときに発生することが多く，それは，定期的な``cron''
タスクが実行されないためです．

@item locate database `/usr/local/var/locatedb' is corrupt or invalid
@c This should not happen.  Re-run @code{updatedb}.  If that works, but
@c @code{locate} still produces this error, run @code{locate --version}
@c and @code{updatedb --version}.  These should produce the same output.
@c If not, you are using a mixed toolset; check your @samp{$PATH}
@c environment variable and your shell aliases (if you have any).  If
@c both programs claim to be GNU versions, this is a bug; all versions of
@c these programs should interoperate without problem.  Ask for help on
@c @email{bug-findutils@@gnu.org}.
@c 
これは発生すべきではありません．@code{updatedb}を再実行してください．動
作するが，@code{locate}がまだこのエラーを生成する場合，@code{locate
--version}と@code{updatedb --version}を実行してください．これらは同じ出
力を生成すべきです．そうでない場合，道具をまぜて使用しています．
@samp{$PATH}環境変数と，シェルのaliase(もしあれば)を調べてください．両
方のプログラムがGNUバージョンであれば，これはバグです．これらのプログラ
ムのすべてのバージョンは，問題なければ相互互換性があるべきです．
@email{bug-findutils@@gnu.org}でたずねてみてください．
@end table

@node Error Messages From updatedb, , Error Messages From locate, Error Messages
@c @section Error Messages From updatedb
@section updatedbのエラーメッセージ

@c The @code{updatedb} program (and the programs it invokes) do issue
@c error messages, but none of them seem to me to be candidates for
@c guidance.  If you are having a problem understanding one of these, ask
@c for help on @email{bug-findutils@@gnu.org}.
@c 
@code{updatedb}プログラム(と，それが呼び出すプログラム)はエラーメッセー
ジを出力しますが，ガイダンスを要求する人がいそうにありません問題があっ
て．これらを理解したい場合，@email{bug-findutils@@gnu.org}でたずねてみ
てください．

@node Primary Index, , Error Messages, Top
@c @unnumbered @code{find} Primary Index
@unnumbered @code{find}のプライマリの索引

@c This is a list of all of the primaries (tests, actions, and options)
@c that make up @code{find} expressions for selecting files.  @xref{find
@c Expressions}, for more information on expressions.
@c 
これは，ファイルを検索するために@code{find}の式を作り上げる，(テスト，
アクション，そしてオプション) すべてのプライマリのリストです．式の詳細
は，@xref{find Expressions}.

@printindex fn

@bye

@comment texi related words used by Emacs' spell checker ispell.el

@comment LocalWords: texinfo setfilename settitle setchapternewpage
@comment LocalWords: iftex finalout ifinfo DIR titlepage vskip pt
@comment LocalWords: filll dir samp dfn noindent xref pxref
@comment LocalWords: var deffn texi deffnx itemx emph asis
@comment LocalWords: findex smallexample subsubsection cindex
@comment LocalWords: dircategory direntry itemize

@comment other words used by Emacs' spell checker ispell.el
@comment LocalWords: README fred updatedb xargs Plett Rendell akefile
@comment LocalWords: args grep Filesystems fo foo fOo wildcards iname
@comment LocalWords: ipath regex iregex expr fubar regexps
@comment LocalWords: metacharacters macs sr sc inode lname ilname
@comment LocalWords: sysdep noleaf ls inum xdev filesystems usr atime
@comment LocalWords: ctime mtime amin cmin mmin al daystart Sladkey rm
@comment LocalWords: anewer cnewer bckw rf xtype uname gname uid gid
@comment LocalWords: nouser nogroup chown chgrp perm ch maxdepth
@comment LocalWords: mindepth cpio src CD AFS statted stat fstype ufs
@comment LocalWords: nfs tmp mfs printf fprint dils rw djm Nov lwall
@comment LocalWords: POSIXLY fls fprintf strftime locale's EDT GMT AP
@comment LocalWords: EST diff perl backquotes sprintf Falstad Oct cron
@comment LocalWords: eg vmunix mkdir afs allexec allwrite ARG bigram
@comment LocalWords: bigrams cd chmod comp crc CVS dbfile dum eof
@comment LocalWords: fileserver filesystem fn frcode Ghazi Hnewc iXX
@comment LocalWords: joeuser Kaveh localpaths localuser LOGNAME
@comment LocalWords: Meyering mv netpaths netuser nonblank nonblanks
@comment LocalWords: ois ok Pinard printindex proc procs prunefs
@comment LocalWords: prunepaths pwd RFS rmadillo rmdir rsh sbins str
@comment LocalWords: su Timar ubins ug unstripped vf VM Weitzel
@comment LocalWords: wildcard zlogout basename execdir wholename iwholename
@comment LocalWords: timestamp timestamps Solaris FreeBSD OpenBSD POSIX

