From fd5af1824688e871455227484540a223971439dc Mon Sep 17 00:00:00 2001 From: ribbon Date: Fri, 29 Apr 2022 18:13:34 +0900 Subject: [PATCH] release GNU_findutils --- manual/GNU_findutils/ChangeLog | 7 + manual/GNU_findutils/release/man1/find.1 | 2195 +++++++++++++------------- manual/GNU_findutils/release/man1/locate.1 | 289 ++-- manual/GNU_findutils/release/man1/updatedb.1 | 211 +-- manual/GNU_findutils/release/man1/xargs.1 | 537 +++---- manual/GNU_findutils/release/man5/locatedb.5 | 246 ++- manual/GNU_findutils/translation_list | 10 +- 7 files changed, 1679 insertions(+), 1816 deletions(-) diff --git a/manual/GNU_findutils/ChangeLog b/manual/GNU_findutils/ChangeLog index 7293cc6e..2c0e9f3d 100644 --- a/manual/GNU_findutils/ChangeLog +++ b/manual/GNU_findutils/ChangeLog @@ -1,3 +1,10 @@ +2022-04-29 ribbon + + * translation_list + * draft/man* + * release/man* + * po4a/man*,po4a/add_ja/* + Wed Mar 14 09:53:47 JST 2018 Chonan Yoichi * translation_list diff --git a/manual/GNU_findutils/release/man1/find.1 b/manual/GNU_findutils/release/man1/find.1 index 8d0e3fbb..9915e495 100644 --- a/manual/GNU_findutils/release/man1/find.1 +++ b/manual/GNU_findutils/release/man1/find.1 @@ -4,24 +4,6 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.\" This file documents the GNU utilities for finding files that match -.\" certain criteria and performing various operations on them. -.\" -.\" Copyright (C) 1994 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. -.\" -.\" 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. .\" .\" Japanese Version Copyright (c) 1997 NAKANO Takeo .\" and 2010 Chonan Yoichi @@ -33,508 +15,451 @@ .\" Modified Sun Jan 30 11:44:29 JST 2011 by Chonan Yoichi .\" Updated and modified (findutils-4.6.0) Sat Mar 3 11:18:22 JST 2018 .\" by Chonan Yoichi +.\" Translatedd for 4.9.0, 2022/04/18 ribbon .\" .\" WORD expression 式 -.\" WORD predicate 述語 (式を構成するオプション、検査、アクションを -.\" 一まとめにした言い方) -.\" WORD test(s) 検査 (4.4.2 までは判別式と訳していたが、変更した) -.\" WORD directive 書式指定子 -.\" WORD access time アクセス日時 -.\" WORD status change time ステータス変更日時 -.\" WORD modification time 内容更新日時 -.\" WORD birth time (ファイルの)作成日時 +.\" WORD predicate 述語 (true/false を返すテストのことを主に +.\" 表します。副作用を起こすアクションも、 +.\" true/false を返すため、これに含みます。) +.\" ただしmanページ内では突然predicateとして出て +.\" くるため「述語表現であるXX」と説明的に補います。 +.\" WORD test テスト (式の1つ; true/falseを返す。) +.\" WORD action アクション (式の1つ; 副作用を起こす。) +.\" WORD operator オペレーター (式の1つ; -a(and)/-o(or)など。) +.\" 式 (expression) を構成する primary は +.\" option, test, action, operator の 4 つであり、 +.\" これらを邦訳するには、4 つのバランスを考えて +.\" オプション、テスト、アクション、オペレーター +.\" とするのが妥当と考えたための訳です。 +.\" WORD directive ディレクティブ (技術用語として定着と判断) +.\" WORD access time アクセス時間 +.\" WORD status change time ステータス変更時間 +.\" WORD modification time 更新時間 +.\" WORD birth time 生成時間 +.\" WORD sparse file スパースファイル (技術用語として定着と判断) .\" .TH FIND 1 +'\" t .SH 名前 -find \- ディレクトリ階層をたどって、条件を満たすファイルを検索する +find \- ディレクトリ階層内のファイル検索 .SH 書式 -\fBfind\fP [\-H] [\-L] [\-P] [\-D debugopts] [\-Olevel] [starting\-point...] +\fBfind\fP [\-H] [\-L] [\-P] [\-D debugopts] [\-Olevel] [starting\-point...\&] [expression] +. .SH 説明 -このマニュアルページは GNU 版 \fBfind\fP の使用法を説明している。 -GNU 版 \fBfind\fP は、指定された探索開始点 (訳注: 探索の始点となるパス。上記書式の -starting\-point...) 以下のディレクトリツリーを一つづつ探索し、与えられた式 -(訳注: 上記書式の expression) を、優先規則に従いつつ (「演算子」セクションを参照)、 -左から右へ評価することによって検索を行う。 式の結果が確定すると -(たとえば、\fIand\fP 演算で左辺が偽になった場合や、\fIor\fP 演算で左辺が真になった場合など)、 -\fBfind\fP は処理の対象を次のファイル名に移す。 -探索開始点が指定されていない場合は、`.' が指定されたものと見なされる。 +このマニュアルページは GNU 版 \fBfind\fP の使用法を説明しています。 GNU \fBfind\fP は、 指定された検索開始ポイント +(starting\-point) を基準にして、 ディレクトリツリーを検索します。 そして優先規則に従って (「オペレーター」のセクション参照)、 +指定された式 (expression) を左から右の順で評価していきます。 たとえば、 \fIand\fP 演算で左辺が false になった場合や、 +\fIor\fP 演算で左辺が true になった場合のように、 式の結果が確定すると、 \fBfind\fP は次のファイル名を処理対象とします。 +検索開始ポイントが指定されていない場合は、 `.\&' が指定されたものとみなします。 .PP -もし \fBfind\fP を使用しているのが、セキュリティの問題をおろそかにできない環境なら -(たとえば、 \fBfind\fP を使って探索しているディレクトリが、自分以外のユーザにも書き込み可能な場合など)、 -findutils 関連文書の 「Security Considerations」の章をお読みになるとよい。 -\fBFinding Files\fP という文書で、findutils に同梱されているはずだ -(訳注: \fBinfo "Finding Files"\fP で読むことができる)。 -その文書では、他の点についてもこのマニュアルページよりはるかに詳しい説明や考察が行われているので、 -この文書以上に情報源としてお役に立つことだろう。 +セキュリティを重視する必要がある状況 (たとえば、 別ユーザーが書き込み可能なディレクトリを、 自分が検索しようとしている場合) のもとで、 +\fBfind\fP を利用する場合には、 findutils 文書の 「Security Considerations」の章をよく読んでください。 +この文書は \fBFinding Files\fP というものであり、 findutils に含まれています。 この文書の方がマニュアルページに比べて、 +詳しい説明や検討が行われているので、 役に立つ情報が得られるかもしれません。 +. .SH オプション -\fB\-H\fP, \fB\-L\fP, \fB\-P\fP というオプションは、シンボリックリンクをどう処理するかを決める。 -こうしたオプションに続くコマンドライン引き数は、探索対象となるファイル名やディレクトリ名と見なされる。 -ただし、それは、`\-' で始まる引き数や、`(' とか `!' という引き数が、続いて現れるまでだ。 -そうした引き数、及びそれに続くいかなる引き数も、何を捜すべきかを記述した式であると解釈される。 -探索開始点のパスが一つも指定されていない場合は、カレントディレクトリ以下が探索の対象になる。 -また、式が一つも指定されていない場合は、\fB\-print\fP が式として使用される -(もっとも、いかなる場合でも、\fB\-print\fP の代わりに \fB\-print0\fP -の使用を考えた方が多分よいだろうが)。 +\fB\-H\fP, \fB\-L\fP, \fB\-P\fP というオプションは、 シンボリックリンクの取り扱いを制御します。 このオプションに続くコマンドライン引数は、 +検索対象となるファイル名やディレクトリ名として扱われます。 ただしそのように扱われるのは、 次に `\-' で始まる引数や、 `(' や `!' +という引数が現れるところまでです。 その引数以降の記述は、 検索方法を示した式として扱われます。 検索開始ポイントのパスが指定されなかった場合は、 +カレントディレクトリが検索対象になります。 また、 式が指定されなかった場合は、 式 \fB\-print\fP が使用されます (ただしどのような場合でも、 +\fB\-print\fP ではなく \fB\-print0\fP の利用を検討してください)。 .PP -このマニュアルページで説明する「オプション」には、式の一部として使われるものもある。 -そうしたオプションは、\fBfind\fP の動作を制御するものであり、指定する位置は、探索開始点の最後のパス名のすぐ後になる。 -それに対して、\fB\-H\fP, \fB\-L\fP, \fB\-P\fP, \fB\-D\fP, \fB\-O\fP -という五つの「本来」のオプションは、指定するなら、最初のパス名の前で指定しなければならない。 -なお、ダッシュを二個重ねた \fB\-\-\fP を使用して、後に続く引き数はオプションではないと明示することも可能だ -(それでも、探索開始点となるパス名のリストでワイルドカードを使用するならば、 -始点のすべてが `./' か `/' で始まるようにしておいた方が、たいてい無難である)。 +このマニュアルページでは、 式の中で用いる「オプション」について説明しています。 オプションは、 \fBfind\fP の動作を制御します。 +これを指定するのは、 パス名の指定を終えた後ろです。 これとは別に、 「本当の」オプションとして \fB\-H\fP, \fB\-L\fP, \fB\-P\fP, \fB\-D\fP, +\fB\-O\fP という 5 つがあります。 これを用いるのであれば、 パス名の指定よりも前でなければなりません。 なお仕様上は、 ダッシュを 2 つ重ねた +\fB\-\-\fP を使用することで、 それ以降の引数が、 オプションでないことを表すことができるとされます。 ただし、 +この後に続く引数がパス引数であるかどうかを決定する処理が原因となって、 2 重のダッシュは実際には動作しません。 つまり式を表す引数 (これも `\-' +で始まります) が現れるところまで、 引数を読み込むことで、 パス引数の終わりが判断されます。 仮にパス引数が `\-' で始まっていたとしたら、 +\fBfind\fP はこれを式として取り扱ってしまいます。 このように、 検索開始点であるパス引数は、 適切に解釈されない場合があり、 他にも、 +ワイルドカードパターンをシェルが展開する際に、 誤って式のように展開してしまうことがあります。 このような状況を避けるため、 +一般的に行う安全策としては、 不安に思うパス名称やワイルドカードの前には、 `./' をつけるようにするか、 '/' +で始まる絶対パス名を用いるようにします。 別の方法として移植性には欠けますが安全な方法があります。 GNU オプションの \fB\-files0\-from\fP +を使って \fBfind\fP の検索開始ポイントを任意に定める方法です。 + .IP \-P -シンボリックリンクをまったくたどらない。これがデフォルトの動作である。\fBfind\fP -がファイルの情報を調べたり表示したりする際に、そのファイルがシンボリックリンクだったら、 -そのシンボリックリンクそのもののプロパティから取得した情報が使用されることになる。 +シンボリックリンクをたどりません。 これがデフォルトの動作です。 \fBfind\fP がファイルの情報を調べたり表示したりする際に、 +そのファイルがシンボリックリンクであれば、 シンボリックリンクそのもののプロパティから取得される情報が用いられます。 .IP \-L -シンボリックリンクをたどる。\fBfind\fP がファイルの情報を調べたり表示したりする際に、 -リンク先のファイルのプロパティから取得した情報が使用されることになり、 -リンクそのものの情報は利用されない (ただし、シンボリックリンクがリンク切れしていたり、 -\fBfind\fP がリンク先のファイルを調べることができなかった場合は除く)。 -このオプションを使用すると、自動的に \fB\-noleaf\fP が指定される。 -後で \fB\-P\fP オプションを指定し直しても、\fB\-noleaf\fP は依然として有効なままである。 -\fB\-L\fP が有効になっているとき、\fBfind\fP が探索中にサブディレクトリを指すシンボリックリンクに出会うと、 -そのシンボリックリンクが参照しているサブディレクトリが探索される。 +シンボリックリンクをたどります。 \fBfind\fP がファイルの情報を調べたり表示したりする際には、 +リンク先ファイルのプロパティから情報が取得され利用されます。 つまりリンクそのものの情報は利用されません (ただし、 シンボリックリンクが切れていたり、 +\fBfind\fP がリンク先のファイルを調べることができなかった場合は除きます)。 このオプションの指定は、 暗に \fB\-noleaf\fP +の指定を含みます。 この指定の後ろに \fB\-P\fP オプションを指定しても、 \fB\-noleaf\fP の効果は変わりません。 \fB\-L\fP が有効であって、 +\fBfind\fP がサブディレクトリを指し示すシンボリックリンクを見つけた場合は、 サブディレクトリ内が検索されます。 .IP -\fB\-L\fP オプションが有効だと、述語 \fB\-type\fP は -(訳注: 「述語 (predicate)」とは、式を構成する基本要素、すなわち、オプション、検査、 -アクションのこと)、シンボリックリンクそのものに対してではなく、 -常にシンボリックリンクが指しているファイルのタイプに対してマッチを行うようになる -(シンボリックリンクがリンク切れしている場合を除く)。 -\fBfind\fP の実行中にシンボリックリンクがリンク切れになるようなアクションを行うと -(たとえば、\fB\-delete\fP を使うと)、動作がわけのわからないものになるかもしれない。 -\fB\-L\fP を使用すると、述語 \fB\-lname\fP や \fB\-ilname\fP は常に偽を返す。 +\fB\-L\fP オプションが有効な場合に、 述語表現である \fB\-type\fP を用いると、 シンボリックリンクそのものではなく、 +シンボリックリンク先のファイルのタイプに対して、 確認が行われます (リンク切れである場合は除きます)。 \fBfind\fP の実行中に、 +シンボリックリンク切れを起こすようなアクションを行うと (たとえば、 \fB\-delete\fP を指定すると)、 混乱を招く動作が発生することになります。 +\fB\-L\fP を使用すると、 述語表現の \fB\-lname\fP や \fB\-ilname\fP は必ず false を返します。 .IP \-H -コマンドライン上で指定された引き数を処理するとき以外、シンボリックリンクをたどらない。 -すなわち、原則として、 \fBfind\fP がファイルの情報を調べたり表示したりする際に、 -シンボリックリンクそのもののプロパティから取得した情報が使用されることになる。 -ただし、この動作には例外が一つあり、それは、コマンドラインで指定されたファイルがシンボリックリンクであり、そのリンクが解決できる場合だ。 -その場合は、リンク先が何であれ、そこから取得した情報が使用され -(つまり、リンクがたどられる)、シンボリックリンク自体の情報は、リンク先のファイルを調べることができなかったときの、控えの情報として使用される。 -なお、\fB\-H\fP が有効なとき、コマンドラインで指定されたパスの中に (訳注: つまり探索開始点の中に) -ディレクトリへのシンボリックリンクがあった場合も、そのディレクトリの中身が調べられることになる -(もっとも、\-maxdepth 0 を指定すれば、 当然ながら、この動作は抑制されることになるだろうが)。 +シンボリックリンクをたどりません。 ただしコマンドライン引数を処理する場合は別です。\fBfind\fP がファイルの情報を調べたり表示したりする際には、 +シンボリックリンクそのものからプロパティを取得して、 その情報が利用されます。 このような動作は、 +コマンドライン上のファイルがシンボリックリンクであった場合には行われません。 このときには、 リンク先が読み取られます。 +つまりその状況では、リンク先が何であっても、 リンク先から取得した情報が利用されます (つまりリンクをたどります)。 +シンボリックリンク自体の情報は、リンク先が確認できなかった場合の予備情報として利用されます。 \fB\-H\fP が有効であって、 +コマンドラインで指定されたパスのうち、 ディレクトリへのシンボリックリンクがあった場合も、 そのディレクトリの中身が調べられることになります (ただし +\fB\-maxdepth\ 0\fP が指定されていれば、 当然そのような処理にはなりません)。 .P -一つ以上の \fB\-H\fP, \fB\-L\fP, \fB\-P\fP を指定した場合は、後のものが前のものを上書きする。 -従って、コマンドラインで最後に指定されたものが、効果を持つわけだ。 -\fB\-P\fP はデフォルトなので、\fB\-H\fP や \fB\-L\fP を指定しないかぎり、\fB\-P\fP -オプションが有効になっていると考えるべきである。 - -GNU \fBfind\fP は実際の探索に取りかかる前にコマンドラインの処理を行うが、 -その際 stat システムコールを使ってファイルの情報を調べることがよくある。 -上述のオプションは、そのとき引き数がどう処理されるかにも影響を与える。 -具体的に説明しよう。いくつかの検査では、コマンドラインで指定したファイルを目下検査の対象になっているファイルと照合する。 -いづれの検査でも、コマンドラインで指定したファイルは、情報が調べられた後、そのプロパティのいくつかが保存されることになる。 -名前を指定したファイルが実際にはシンボリックリンクであるとき、\fB\-P\fP オプションが有効な場合は -(すなわち、 \fB\-H\fP と \fB\-L\fP のどちらのオプションも指定されていない場合は)、 -照合に使用される情報は、シンボリックリンクのプロパティから取得したものである。 -それ以外の場合、使用されるのはリンク先のファイルのプロパティから取得した情報だ。 -ただし、\fBfind\fP が (たとえば、権限が不十分だとか、リンク先のファイルが存在しないとかの理由で) -リンクをたどれない場合は、リンクそのもののプロパティが使われることになる。 +複数の \fB\-H\fP, \fB\-L\fP, \fB\-P\fP を指定した場合は、 前のものが上書きされます。 つまり、 適用されるものは、 +コマンドライン上で最後に指定されたものです。 \fB\-P\fP がデフォルトなので、 \fB\-H\fP や \fB\-L\fP の指定がなければ、 \fB\-P\fP +オプションが有効であると判断できます。 + +GNU \fBfind\fP は、 検索処理に入る前のコマンドライン処理においても、 ファイル情報を調べることがあります。 上に示したオプションは、 +そのような引数の処理に対しても、 影響を及ぼします。 具体的に見てみると、 数多くのテストでは、 その時点で処理対象となっている 1 つのファイルと、 +コマンドライン上の複数ファイルとの間で、 比較処理を行います。 どの状況でも、 コマンドラインから指定されたファイルは、 プロパティが調べられて、 +その一部は保存されます。 引数上のファイルがシンボリックリンクであって、 \fB\-P\fP オプションが有効な場合 (あるいは \fB\-H\fP と \fB\-L\fP +オプションの指定がどちらもない場合)、 比較処理に用いられるのは、 シンボリックリンクのプロパティ情報です。 そうでない場合には、 +リンク先ファイルのプロパティ情報が用いられます。 \fBfind\fP がリンク先をたどれなかった場合 (たとえば権限が不足していた場合や、 +リンク先が存在しないファイルであった場合)、 シンボリックリンクそのもののプロパティが用いられます。 .P -\fB\-H\fP や \fB\-L\fP オプションが有効な場合は、 -\fB\-newer\fP の引き数として指定されたのがシンボリックリンクなら、 -その参照がたどられて、リンク先のファイルからタイムスタンプが取得されることになる。 -同じことが、 \fB\-newerXY\fP, \fB\-anewer\fP, \fB\-cnewer\fP についても言える。 - -式の一部として使用される \fB\-follow\fP オプションには \fB\-L\fP と同様の効果があるが、 -それが現れた位置から有効になるという点が異なる -(すなわち、\fB\-L\fP が使われずに、\fB\-follow\fP が使われた場合、 -\fB\-follow\fP より後で指定されたいかなるシンボリックリンクも参照がたどられるが、 -その前に指定されたシンボリックリンクは参照がたどられない)。 - -.IP "\-D debugoptions" -診断用の情報を出力する。\fBfind\fP が期待どおりに動いてくれないとき、 -問題の原因追求に役立つことがある。デバッグオプションを複数指定するときは、コンマで区切る。 -findutils のバージョンの間で、デバッグオプションの互換性は保証されていない。 -有効な全デバッグオプションのリストについては、\fBfind \-D help\fP の出力を見るとよい。 -有効なデバッグオプションの中には、以下のものがある。 +\fB\-H\fP あるいは \fB\-L\fP オプションが有効な場合、 \fB\-newer\fP の引数として指定されたものがシンボリックリンクなら、 +その参照をたどって、 リンク先のファイルからタイムスタンプを取得します。 このような処理は、 \fB\-newerXY\fP, \fB\-anewer\fP, +\fB\-cnewer\fP でも同様に行われます。 + +\fB\-follow\fP オプションは、 \fB\-L\fP と同様の効果がありますが、 オプションの指定位置以降に対して有効になります。 (つまり、 \fB\-L\fP +を使わずに、 \fB\-follow\fP が使われた場合、 コマンドライン上、 シンボリックリンクが \fB\-follow\fP の後ろに指定されている場合は、 +参照をたどるのに対して、 その前に指定されたものは参照をたどりません。) + +.IP "\-D debugopts" +診断情報を出力します。 \fBfind\fP が思うように動かない場合に、 原因調査に役立てることができます。 デバッグオプションを複数指定するときは、 +カンマで区切ります。 findutils のリリース間において、 デバッグオプションの互換性は保証されません。 有効なデバッグオプションの一覧は、 +\fBfind \-D\ help\fP の出力を確認してください。 有効なデバッグオプションには、 以下のものがあります。 .RS -.IP help -デバッグ用オプションを説明する。 -.IP tree -式の構造 (expression tree) をオリジナルな形と最適化した形で示す。 -.IP stat -\fBstat\fP や \fBlstat\fP システムコールを使ってファイルを調べたとき、メッセージを表示する。 -\fBfind\fP プログラムは、そうしたシステムコールの回数を最少にしようとする。 +.IP exec +\-exec, \-execdir, \-ok, \-okdir に関連する診断情報を表示します。 .IP opt -式の構造 (expression tree) の最適化に関する診断情報を表示する。\-O オプションを参照。 +式ツリー (expression tree) の最適化に関する診断情報を表示します。 \-O オプションを参照してください。 .IP rates -各述語が何回成功し、何回失敗したかを示す情報を要約して表示する。 +述語表現が成功あるいは失敗した回数を、 取りまとめて表示します。 +.IP search +ディレクトリツリーを詳細に示します。 +.IP stat +システムコールの \fBstat\fP や \fBlstat\fP を使って、 ファイルが調べられた場合に、 メッセージを表示します。 \fBfind\fP +プログラムは、 そのようなシステムコールの呼び出しを、 最小となるように処理します。 +.IP tree +式ツリー (expression tree) を、 元の形と最適化した形で示します。 +.IP all +すべてのデバッグオプションを有効にします (ただし \fBhelp\fP は除きます)。 +.IP help +デバッグ用オプションを説明します。 .RE .IP \-Olevel -問い合わせの最適化を有効にする。\fBfind\fP プログラムは、全体的な効果を維持しつつ、検査の順序を並べ替えることによって、実行速度を上げる。 -すなわち、付加的な作用のある述語同士については、相互の相対的な順序を変更しないということだ。 -各最適化レベルで行われる最適化は、以下のとおりである。 +問い合わせの最適化を有効にします。 \fBfind\fP プログラムは、 複数テスト全体の処理内容を変えることなく、 テストの順番を並べ替えて、 +実行速度を上げます。 ただし、 副作用を持つ述語は、 他の述語と入れ替えは行いません。 最適化レベルごとの最適化の違いは以下のとおりです。 .RS .IP 0 -最適化レベル 1 と同じである。 +最適化レベル 1 と同じです。 .IP 1 -これはデフォルトの最適化レベルであり、伝統的な動作に当たる。 -式を並べ替えるとき、ファイル名にのみ基づいた検査 -(たとえば、 \fB\-name\fP や \fB\-regex\fP) が先に実行されるようにする。 +これはデフォルトの最適化レベルであり、 従来からある動作です。 ファイル名だけを確認するテスト (たとえば \fB\-name\fP や \fB\-regex\fP) +が先に実行されるように、 式の並び替えを行います。 .IP 2 -検査 \fB\-type\fP や \fB\-xtype\fP の実行は、ファイル名のみに基づいたいかなる検査よりも後になるが、 -inode から情報を取得する必要があるどんな検査よりも先になる。 -最近の Unix には \fBreaddir()\fP 関数でファイルタイプを取得できるものが多いので、 -こうした述語は、stat 関数でファイルの情報を取得するところから始めなければならない述語よりも、評価に時間がかからないのである。 -なお、\fB\-fstype\fP \fIFOO\fP という述語を使った場合に、 -\fBfind\fP の起動時に既知になっていない (すなわち、`/etc/mtab' に存在しない) -ファイルシステムのタイプ \fIFOO\fP を指定すると、\fB\-fstype\fP \fIFOO\fP は -\fB\-false\fP と同じことになる。 +ファイル名だけを確認するテストよりも、\fB\-type\fP あるいは \fB\-xtype\fP を後に処理します。 ただし i +ノードからの情報を必要とするテストよりは、 前に処理します。 最近の Unix では、 \fBreaddir()\fP +関数がファイルタイプを返すようになっているため、 これらの述語表現は、 ファイル情報を最初に調べる述語表現に比べて、 処理が高速になります。 述語表現の +\fB\-fstype\fP \fIFOO\fP を用いた際に、 指定したファイルシステムタイプ \fIFOO\fP が、 \fBfind\fP の起動時点において不明なもの +(`/etc/mtab' に存在しないもの) であった場合、 この述語表現は \fB\-false\fP に等しくなります。 .IP 3 -この最適化レベルでは、コストに基づいた問い合わせの最適化を徹底して行う機能が有効になる。 -検査の順序が必要なら変更され、コストのかからない (すなわち、速い) 検査が先に行われて、よりコストのかかる検査が後回しにされる。 -コストがほぼ同じ場合には、その述語が真を返しそうか、偽を返しそうかによって、評価の順番が変わってくる。 -\fBor\fP 演算では、真を返しそうな述語が先に評価され、\fBand\fP 演算では、偽になりそうな述語が先に評価されるのである。 +この最適化レベルでは、 コストベースによって最適化を行う、 完全な問合せオプティマイザー (query optimiser) を有効にします。 +コストの低い (つまり高速になる) テストを先に処理し、 コストの高いものは後に処理するというように、 必要に応じた並び替えが行われます。 +一定のコストの幅の中では、 述語表現が成功するか否かの可能性を考慮して、 述語表現の評価を先に行ったり、 後に行ったりします。 \fB\-o\fP の場合は、 +成功する可能性のあるものが、 先に評価されます。 \fB\-a\fP の場合は、 失敗する可能性のあるものが、 先に評価されます。 .RE .IP -コストに基づいた最適化機能は、ある検査が真を返す確率について一定の考えを持っている。 -場合によっては、その確率について、問題のテストの特性が考慮されることもある -(たとえば、 \fB\-type f\fP は、 \fB\-type c\fP よりも、真になる可能性が高いと見なされる)。 -コストに基づいた最適化機能は、現在のところその効果を評価中である。 -もし、それによって \fBfind\fP の性能が実際に向上することがなければ、捨てられることになるだろう。 -反対に、信頼性があり、問題を起こしにくく、効果的であることがはっきりした最適化は、 -そのうち下位の最適化レベルでも採用されるかもしれない。とは言え、リリース 4.3.x -のシリーズでは、 デフォルトの動作 (すなわち、最適化レベル 1) を変更する予定はない。 -なお、findutils のソースに付属するテスト集は、そのテストのすべてを各最適化レベルの -\fBfind\fP で実行して、どの最適化レベルでも結果が同じになることを保証している。 -.P -.SH "式 (EXPRESSION)" -コマンドライン上で探索開始点 (starting\-point) のリストの後ろに続く部分は、「式 (\fIexpression\fP)」である。 -式は、言わば問い合わせの細目のようなものであり、 -どういうファイルがマッチするのかと、そのマッチしたファイルをどう処理するのかを記述している。 -式は一連の要素からなっている (訳注: このマニュアルでは、そうした式の要素、 -特にオプション、検査、アクションをまとめて「述語 (predicate)」と呼んでいる)。 - -.IP "検査 (Tests)" -検査は、通常、考慮の対象になっているファイルの何らかのプロパティ -(property、属性、性状) に基づいて、真または偽の値を返す。たとえば、\fB\-empty\fP -という検査は、対象になっているファイルが空の場合にのみ、真になる。 - -.RS -.IP "[\fB訳注\fP]:" 8 -バージョン 4.4.2 までの翻訳では、この \fBTests\fP -を「判別式」と訳してきたが、今回は素直に「検査」と訳すことにした。同じものである。 -.RE -.IP "アクション (Actions)" -アクションには付加的な作用があり (たとえば、標準出力に何かを表示するなど)、 -通常、その作用の実行に成功したか失敗したかに基づいて、真または偽を返す。 -たとえば、\fB\-print\fP というアクションは、対象になっているファイルの名前を標準出力に表示する。 - -.IP "グローバルオプション (Global options)" -グローバルオプションは、検査やアクションがコマンドライン中のどこで指定されていても、 -その動作に影響を与える。また、グローバルオプションは、常に真を返す。 -たとえば、\fB\-depth\fP オプションを指定すると、\fBfind\fP は、ファイルシステムをたどるとき、 -深い方から先に (depth\-first order) 処理していくことになる -(訳注: 下記の \fB\-depth\fP の説明を参照)。 - -.IP "位置オプション (Positional options)" -位置オプションが影響を与えるのは、それより後に続く検査やアクションに対してだけである。 -また、位置オプションは常に真を返す。たとえば、\fB\-regextype\fP オプションは、その位置が意味を持ち、 -コマンドライン上でそれより後に現れる正規表現に対して、正規表現のどの方言かを指定することになる。 - -.IP "演算子 (Operators)" -演算子は、式を構成する事項同士を結びつけるものである。 -演算子には、\fB\-o\fP (論理 OR を意味する) や \fB\-a\fP (論理 AND を意味する) などがある。 -演算子がないところには、\fB\-a\fP があるものと見なされる。 +コストベースのオプティマイザーは、 対象のテストが成功するかどうかに関して、 一定の取り決めを設けています。 成功するかどうかの判断は、 +テストの性質を配慮して、 状況により変化する場合があります (たとえば \fB\-type\ f\fP の場合は、 \fB\-type\ c\fP よりも、 +成功する可能性が高いとみなしています)。 コストベースのオプティマイザーは現在、 評価中の段階です。 したがって、 \fBfind\fP +の性能が実際に向上しなければ、 削除される予定です。 逆に、 この機能に信頼性や確実さが確認されて、 効果的であることが分かれば、 後々、 +下位の最適化レベルにおいて実現するかもしれません。 ただし、 4.3.x 系のリリースにおいては、 デフォルトの動作 (最適化レベル 1) +を変更する予定はありません。 findutils のテストスイートでは、 \fBfind\fP に対するテストすべてにおいて、 +各最適化レベルでの処理を実施していて、 その結果が同一になることを確認しています。 +. +.SH 式 +コマンドライン上で、 検索開始ポイント (starting\-point) のリストの次にくるものが、式 (\fIexpression\fP) です。 式は、 +検索方法を定めます。 どのファイルに一致するか、 一致したファイルをどう処理するか、 ということを表します。 式は、 以下の項目から構成されます。 + +.IP "テスト (test)" +テストは true または false を返します。 通常その値は、 処理時点での対象ファイルの所定のプロパティに基づいて決まります。 たとえば +\fB\-empty\fP というテストは、 対象ファイルが空の場合に true になります。 + +.IP "アクション (action)" +アクションには副作用があり (たとえば、 標準出力に何かを表示するなどして)、 その上で true または false を返します。 通常その値は、 +副作用による処理の成功または失敗に基づいて決まります。 たとえば \fB\-print\fP というアクションは、 対象ファイルの名前を標準出力に出力します。 + +.IP "グローバルオプション (global option)" +グローバルオプションは、 コマンドライン上に指定されているテストやアクションすべてに影響を及ぼします。 グローバルオプションは、 必ず true +を返します。 たとえば、 \fB\-depth\fP オプションを指定すると、 \fBfind\fP がファイルシステムをたどるときに、 深い方から先 +(depth\-first order) に処理します。 + +.IP "位置オプション (positional option)" +位置オプションは、 この後ろにあるテストやアクションに対してのみ影響を及ぼします。 位置オプションは、 必ず true を返します。 たとえば +\fB\-regextype\fP オプションは、 その記述位置によって動作が決まります。 コマンドライン上で、 この記述以降に現れる正規表現が、 +どういった方言の正規表現であるかを指定します。 + +.IP "オペレーター (operator)" +オペレーターは、 式を構成する項目どうしを結びつけます。 オペレーターには、 \fB\-o\fP (論理 OR の意味) や \fB\-a\fP (論理 AND +の意味) があります。 オペレーターがないところは、 \fB\-a\fP があるものとみなされます。 .P -式の中に \fB\-prune\fP や \fB\-print\fP 以外のアクションがまったく存在しない場合は、 -式全体の結果が真になったすべてのファイルに対して \fB\-print\fP が実行される。 +式がすべて true になったファイルに対して、 アクション \fB\-print\fP が実行されます。 ただしアクション \fB\-prune\fP または +\fB\-quit\fP を除いた、 他のアクションがある場合は、 実行されません。 デフォルトの \fB\-print\fP の動作を発生させないアクションは、 +以下のものです。 \fB\-delete\fP, \fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP, \fB\-okdir\fP, \fB\-fls\fP, +\fB\-fprint\fP, \fB\-fprintf\fP, \fB\-ls\fP, \fB\-print\fP, \fB\-printf\fP -\fB\-delete\fP というアクションはオプションのようにも働く -(自動的に \fB\-depth\fP を有効にするからである)。 + +\fB\-delete\fP というアクションは、 オプションのようにも働きます (\fB\-depth\fP の指定を暗に含むためです)。 .SS 位置オプション -位置オプションは、常に真を返す。 -位置オプションが影響を与えるのは、コマンドライン上でそれより後に現れる検査に対してだけである。 +位置オプションは、 常に true を返します。 位置オプションは、 この後ろにあるテストに対してのみ影響を及ぼします。 .IP \-daystart -\fB\-amin\fP, \fB\-atime\fP, \fB\-cmin\fP, \fB\-ctime\fP, \fB\-mmin\fP, \fB\-mtime\fP -において、今日 (すなわち 0 日前) の始まりを今現在から 24 時間前ではなく、コマンド実行当日の 0 時にする。 -このオプションが影響を及ぼすのは、コマンドラインで自分より後に指定された検査に対してだけである。 - -.RS -.IP "[\fB訳注\fP]:" 8 -.BR \-amin , -.BR \-cmin , -.BR \-mmin -のことも考慮するなら、「デフォルトでは時間を計算するときの基点を今現在に置くが、 -.B \-daystart -を指定すると、時間計算の基点が今日の 24:00 になる」と考えれば、 -わかりやすいかもしれない。 -.RE +時間の計測を、 24 時間前からではなく、 本日の始まりからとします (対象は \fB\-amin\fP, \fB\-atime\fP, \fB\-cmin\fP, +\fB\-ctime\fP, \fB\-mmin\fP, \fB\-mtime\fP です)。 このオプションの指定が有効になるのは、 +コマンドライン上でこれよりも後ろに記述されたテストに対してのみです。 .IP \-follow -非推奨である。 \fB\-L\fP オプションを代わりに使う方がよい。 -シンボリックリンクをたどる。 \fB\-noleaf\fP が自動的に設定される。 -\fB\-follow\fP オプションが影響を及ぼすのは、コマンドラインで自分より後に指定された検査に対してだけである。 -\fB\-H\fP や \fB\-L\fP オプションが指定されていない場合、\fB\-follow\fP -オプションの位置によって述語 \fB\-newer\fP の動作が変わってくる。 -\fB\-newer\fP が \fB\-follow\fP の後に来れば、\fB\-newer\fP -の引き数として指定されたいかなるファイルも、それがシンボリックリンクなら、リンクをたどられることになるわけだ。 -同じことが \fB\-newerXY\fP, \fB\-anewer\fP, \fB\-cnewer\fP についても言える。 -同様に、述語 \fB\-type\fP も、シンボリックリンクそのものではなく、 -必ずシンボリックリンクが参照しているファイルのタイプに対してマッチを行うようになる。 -\fB\-follow\fP を使用すると、述語 \fB\-lname\fP と \fB\-ilname\fP は常に偽を返す。 +非推奨とされています。 代わりに \fB\-L\fP オプションを使ってください。 これはシンボリックリンクをたどます。 \fB\-noleaf\fP +の指定を暗に含みます。 \fB\-follow\fP オプションが影響を及ぼすのは、 コマンドライン上で、 これよりも後ろに指定されたテストに対してのみです。 +\fB\-H\fP あるいは \fB\-L\fP オプションの指定がなければ、 \fB\-follow\fP オプションが記述されると、 述語表現 \fB\-newer\fP +の動作は変わります。 \fB\-newer\fP の引数として指定されたファイルが、 シンボリックリンクであった場合は、 そのリンク先が参照されます。 +\fB\-newerXY\fP, \fB\-anewer\fP, \fB\-cnewer\fP についても同様です。 また、 述語表現の \fB\-type\fP も、 +シンボリックリンクそのものではなく、 シンボリックリンク先のファイルタイプに一致するようになります。 \fB\-follow\fP を指定すると、 述語表現 +\fB\-lname\fP と \fB\-ilname\fP は、 必ず false を返します。 .IP "\-regextype \fItype\fP" -検査 \fB\-regex\fP と \fB\-iregex\fP が理解する正規表現の文法を変更する。 -このオプションよりコマンドラインの後方で指定する \fB\-regex\fP などに対して効果がある。 -どういう正規表現のタイプが使えるかを知るには、\fB\-regextype\fP \fBhelp\fP を使用すればよい。 -様々なタイプの正規表現が、どんなもので、どこが違うかについては、\fBfind\fP の Texinfo -文書に説明がある (「関連項目」を参照)。 +コマンドライン上で、 この後に記述されるテスト \fB\-regex\fP と \fB\-iregex\fP に対して、 解釈する正規表現文法を変更します。 +正規表現の種類には何があるかについては、 \fB\-regextype\ help\fP を実行して確認してください。 Texinfo 文書 +(「関連項目」参照) では、 各種正規表現の意味や違いについて説明しています。 .IP "\-warn, \-nowarn" -警告メッセージの表示、非表示を切り替える。 -ここで言う警告とは、もっぱらコマンドラインの使用法に関するものであり、\fBfind\fP -がディレクトリを探索中に出会うかもしれない何らかの状況に関するものではない。 -デフォルトの動作は、標準入力が tty であれば、\fB\-warn\fP であり、 -それ以外の場合は、\fB\-nowarn\fP である。 -コマンドラインの使用法に関する警告メッセージが生ずる場合でも、\fBfind\fP -の終了ステータスは影響を受けない。 -なお、環境変数 POSIXLY_CORRECT が設定され、しかも \fB\-warn\fP まで指定された場合に、 -警告を出すとしても、どの警告を出すかは決まっていない -(訳注: POSIX の規定では、\fBfind\fP は基本的に、エラーメッセージは出しても、警告メッセージは出さないことになっている。 -だから、POSIXLY_CORRECT と \fB\-warn\fP の両方を指定するのは、使用法に混乱があるのである。 -ちなみに、手元の 4.6.0 では警告は出ない)。 +警告メッセージの表示、非表示を切り替えます。 この警告は、 コマンドラインの使用法に関するものだけを対象とします。 逆に \fBfind\fP +のディレクトリ検索時における処理状況に関するものは、 対象としません。 デフォルトの動作は、 標準入力が tty であれば \fB\-warn\fP になり、 +そうでなければ \fB\-nowarn\fP になります。 コマンドラインの使用法に関する警告メッセージが出力された場合であっても、 \fBfind\fP +の終了ステータスには影響しません。 環境変数 \fBPOSIXLY_CORRECT\fP が設定された状態で、 \fB\-warn\fP が指定されると、 +警告が発生したとしても、 どの警告を出すのかは未定です。 .SS グローバルオプション -グローバルオプションは常に真を返す。 -グローバルオプションは、コマンドライン上でそれよりも前にある検査に対しても効果を持つ。 -混乱を避けるためには、グローバルオプションは、コマンドライン上で、探索開始点のリストの後ろ、 -検査や位置オプションやアクションが現れる前に指定すべきである。 -グローバルオプションを他の場所で指定すると、\fBfind\fP -は「混乱の元になりかねない」旨の警告メッセージを出す。 +グローバルオプションは、必ず true を返します。 グローバルオプションは、 コマンドライン上で、 +これよりも前にあるテストに対しても影響を及ぼします。 混乱を避けるために、 コマンドライン上でのグローバルオプションの指定は、 +検索開始ポイントのリストの後ろで、 テスト、位置オプション、 アクションの直前に指定してください。 グローバルオプションを、 +それとは別の場所で指定すると、 \fBfind\fP は、 混乱する可能性があることを示す警告メッセージを出力します。 -グローバルオプションの位置は、探索開始点のリストより後ろである。だから、\fB\-L\fP -などとは、まったく別種のオプションである。 +グローバルオプションの指定位置は、 検索開始ポイントのリストより後ろです。 このため \fB\-L\fP とは異なる種類のものです。 たとえば以下のとおりです。 .IP \-d -\-depth と同じ。FreeBSD, NetBSD, MacOS X, OpenBSD との互換性のためにある。 +\-depth と同じです。 FreeBSD, NetBSD, MacOS X, OpenBSD との互換性のためにあります。 .IP \-depth -ディレクトリそのものより先に、ディレクトリの中身を処理する。 -アクション \fB\-delete\fP を使用すると、\fB\-depth\fP オプションも自動的に設定される。 +ディレクトリそのものより前に、 ディレクトリの中を処理します。 アクション \fB\-delete\fP には \fB\-depth\fP +オプションが暗に含まれています。 + +.IP "\-files0\-from \fIfile\fP" +検索開始ポイントを、 コマンドラインから指定されたものを使わずに、 \fIfile\fP から読み込みます。 +コマンドラインからの引数として検索開始ポイントを指定することには、 一定の制約がありました。 つまりファイルの指定数に上限があったことです。 +またオプション名とかぶるようなファイル名の場合に、 見誤ってしまうことがありました。 このオプションを使うと、 \fBfind\fP +に指定する検索開始ポイントを、 安全にまた任意の数だけ受け渡すことができます。 + +このオプションを用いることと、 コマンドラインから検索開始ポイントを受け渡すことは、 互いに排他的な関係にあります。 +つまり両方を同時に用いることはできません。 + +引数 \fIfile\fP は必須です。 検索開始ポイントの一覧を \fI標準入力\fP ストリームからとることは可能であり、 +たとえばパイプを使って受け渡すことができます。 その場合、 アクション \fB\-ok\fP と \fB\-okdir\fP は用いることができません。 +これらはユーザーからの入力確認を行うものであるため、 \fI標準入力\fP からの読み込みとは、 明らかに相容れないものになるからです。 + +\fIfile\fP 内の検索開始ポイントは、 ASCII NUL 文字によって区切ります。 2 つの連続した NUL 文字、 +つまり検索開始ポイントのファイル名の長さがゼロであるものは、 指定することができません。 +その場合はエラーメッセージが出力されて、最後にゼロ以外の終了コードが返されます。 + +指定された \fIfile\fP が空の場合、 \fBfind\fP は検索開始ポイントがないものとして処理をするため、 プログラム引数を解析した後に、 +すぐに終了します。 これは、 パス引数が受け渡されなかった場合に、 \fBfind\fP の標準的な呼び出しを行えば、 +カレントディレクトリを検索開始ポイントとする動作とは異なることになります。 + +検索開始ポイントからの処理は、 それ以外の点では通常どおり行われます。 つまり \fBfind\fP は特に指示がない限りは、 +サブディレクトリを再帰的に処理します。 検索開始ポイントだけを処理するには、 さらに \fB\-maxdepth\ 0\fP を指定することができます。 + +さらに注意点です。 入力ファイル内に所定のファイルが複数回記述されていた場合、 それが複数回検索されることになるかどうかは不定です。 \fBfind\fP +の処理中に \fIfile\fP が変更された場合も、 同様に不定です。 また \fBfind\fP が終了する際の、その指定された \fIfile\fP +内の検索位置も、 終了方法が \fB\-quit\fP であるか別の方法であるかを問わず、 不定となります。 ここで "不定" と言っているのは、 +動作するしないは分からず、何か特定の処理がなされるかもしれないということであり、 その動作は、 プラットフォームによって変わるかもしれないし、 +\fBfindutils\fP のリリースによって変わるかもしれないということです。 .IP "\-help, \-\-help" -\fBfind\fP のコマンドラインの使用法をざっと説明して終了する。 +\fBfind\fP のコマンドラインの使用方法の概要を表示して終了します。 .IP \-ignore_readdir_race -通常、\fBfind\fP は stat 関数でファイル情報を取得できなかったとき、 -エラーメッセージを出すことになっている。 -ところが、このオプションを指定した場合は、 -\fBfind\fP がディレクトリからファイル名を読み込んでから、そのファイルに対して -stat 関数を実行しようとするまでの間に、ファイルが消去されても、エラーは表示されない。 -この動作は、コマンドラインで名前を指定したファイルやディレクトリに対しても適用される。 -このオプションは コマンドラインを読み込む際に有効になるので、 -ファイルシステムのある部分をこのオプションを有効にして探索し、 -別の部分はこのオプションを無効にして探索するといったことはできない -(そうしたことをやりたかったら、 \fBfind\fP コマンドを二回実行する必要があるだろう。 -一回目は、このオプションを付けて、もう一回はこのオプションなしで)。 +通常 \fBfind\fP は、 ファイル情報の取得に失敗したときには、 エラーメッセージを出力します。 このオプションを指定した場合、 +ディレクトリからファイル名を読み込んだときと、 ファイル情報を取得しようとしたときの間で、 ファイルが削除されてしまっていても、 +エラーは表示されません。 この動作は、 コマンドライン上から指定されるファイルやディレクトリに対しても適用されます。 このオプションは、 +コマンドラインから読み込みを行う段階で有効となるので、 ファイルシステムの一部に対して、 このオプションをオンとし、 +残りの部分はオフとするような指定はできません。 (これを実現しなければならない場合は、 \fBfind\fP コマンドを 2 つ実行することが必要です。1 +つは本オプションをオンにして、 もう 1 つはオフにして実行します。) + +さらに、 \fB\-ignore_readdir_race\fP オプションを指定した \fBfind\fP の実行では、 親ディレクトリを読み込んだ後に、 +対象ファイルが消失している状況が発生した場合、 \fB\-delete\fP アクションからのエラーも無視します。 その場合には、 診断エラーは出力されず、 +\fB\-delete\fP アクションからの返り値も true になります。 .IP "\-maxdepth \fIlevels\fP" -探索開始点から最大 \fIlevels\fP 段階下のディレクトリまで探索する (\fIlevels\fP は非負の整数)。 -\fB\-maxdepth 0\fP を指定すると、検査やアクションの対象になるのは、探索開始点だけになる。 +検索開始ポイントから最大で、 \fIlevels\fP で示される階層数のディレクトリまで検索します (\fIlevels\fP は負ではない整数です)。 +\fB\-maxdepth 0\fP を指定すると、 テストやアクションの対象は、 検索開始ポイントだけになります。 + .IP "\-mindepth \fIlevels\fP" -探索開始点から少なくとも \fIlevels\fP -段階ディレクトリを下降するまで、いかなる検査やアクションも行わない (\fIlevels\fP は非負の整数)。 -\fB\-mindepth 1\fP を指定すると、探索開始点を除くすべてのファイルを処理することになる。 +検索開始ポイントから \fIlevels\fP で示される階層数のディレクトリに至るまでは、 テストやアクションを適用しません (\fIlevels\fP +は負ではない整数です。)。 \fB\-mindepth 1\fP を指定すると、 検索開始ポイントを除いたファイルを、 すべて処理することになります。 .IP \-mount -ほかのファイルシステムにあるディレクトリを探索しない。これは \fB\-xdev\fP -の別名であり、系統の違う \fBfind\fP との互換性のためにある。 +ファイルシステムが異なる場合は、 ディレクトリを検索しません。 これは \fB\-xdev\fP の別名であり、 バージョンが異なる \fBfind\fP +との互換性のために設けられています。 .IP \-noignore_readdir_race -\fB\-ignore_readdir_race\fP の効果を無効にする。 +\fB\-ignore_readdir_race\fP の効果を無効にします。 .IP \-noleaf -「ディレクトリのハードリンク数から 2 を引いたものが、そのディレクトリに含まれるサブディレクトリの数である」とする最適化動作を行わない。 -このオプションが必要になるのは、ディレクトリとリンクの関係について -Unix の流儀に従わないファイルシステムを探索するときだ。たとえば、CD\-ROM や -MS\-DOS のファイルシステムとか、AFS ボリュームのマウントポイントなどを探索するときである。 -通常の Unix ファイルシステムでは、各ディレクトリは少なくとも 2 個のハードリンクを持っている。 -ディレクトリ名のエントリと、そのディレクトリ中の `.' エントリである。 -さらに、そのディレクトリにサブディレクトリがあれば、 -サブディレクトリそれぞれに、親ディレクトリにハードリンクした `..\&' エントリが存在する。 -そこで、\fBfind\fP としては、ディレクトリを調べる際に、ディレクトリのハードリンク数より -2 だけ少ない数のサブディレクトリを stat 関数で調べた時点で、ディレクトリ中の残りのエントリはディレクトリではない -(ディレクトリツリー中の枝ではなく、「葉っぱ (leaf)]」ファイルである) とわかるわけだ。 -もし、調べるのがファイル名だけで充分なら、ファイルに対して stat 関数を実行する必要はもうない。 -そこで、この最適化動作によって、検索速度がいちじるしく向上するわけである。 +ディレクトリに含まれるサブディレクトリ数が、 ハードリンク数よりも 2 つ少ない、 とする想定のもとでの最適化を無効にします。 +このオプションが必要になるのは、 Unix のディレクトリとリンクに関する慣例に従っていないファイルシステム、 たとえば CD\-ROM、 MS\-DOS +ファイルシステム、 AFS ボリュームマウントポイントを検索する場合です。 通常の Unix ファイルシステムにおいては、 各ディレクトリに最低でも 2 +つのハードリンクがあります。 ディレクトリ名そのものと、 `.\&' エントリです。 そしてサブディレクトリがある場合に、 そのサブディレクトリには、 +親ディレクトリにリンクする `..\&' というエントリがあります。 そこで \fBfind\fP がディレクトリを調べる際に、 +ディレクトリへのリンク数よりも 2 つ分だけ少ないサブディレクトリを調べた後であれば、 ディレクトリ内の残りのエントリは、 ディレクトリではない +(ディレクトリツリー内の「葉」(leaf) ファイルである) ことが決定します。 ファイル名を調べるだけで十分であれば、 +ファイル情報を調べる必要がなくなるので、 これを利用すれば、 検索速度が明らかに向上します。 .IP "\-version, \-\-version" -\fBfind\fP のバージョンを表示して終了する。 +\fBfind\fP のバージョンを表示して終了します。 .IP \-xdev -ほかのファイルシステムにあるディレクトリを探索しない。 - -.SS "検査 (TESTS)" -検査の中には、たとえば \fB\-newerXY\fP や \fB\-samefile\fP -のように、現在検査の対象になっているファイルと、コマンドラインで指定したリファレンスファイルとを比較することになっているものがある。 -そうしたリファレンスファイルが実際には何を指すかは、\fB\-H\fP, \fB\-L\fP, \fB\-P\fP -といったオプションや、先行する \fB\-follow\fP の存在によって決まってくる。 -ただし、リファレンスファイルが調べられるのは、一回だけであり、それはコマンドラインの解析が行われるときである。 -リファレンスファイルを調べることができない場合は (たとえば、それに対する \fBstat\fP(2) -システムコールに失敗するなど)、エラーメッセージが表示され、\fBfind\fP は -0 以外のステータスで終了する。 +異なるファイルシステムのディレクトリを検索しません。 + +.SS "テスト (test)" +テストの中には、 \fB\-newerXY\fP や \fB\-samefile\fP のように、 その時点で対象となっているファイルと、 +コマンドラインから指定する参照ファイル (reference file) との間で、 比較を行うものがあります。 そのようなテストが指定された際に、 +参照ファイルに対する解釈は、 \fB\-H\fP, \fB\-L\fP, \fB\-P\fP といったオプションや、 先行する \fB\-follow\fP の存在によって決定します。 +ただし、 参照ファイルが調べられるのは、 コマンドラインが解析されるときの 1 回だけです。 参照ファイルが調べられなかった場合 (たとえば、 +\fBstat\fP(2) システムコールに失敗した場合)、 エラーメッセージが出力されて、 \fBfind\fP は 0 以外のステータスを返して終了します。 .P -数値の引き数は、以下の形で指定することができる。 +数値引数である \fIn\fP は、 以下のテスト、 \fB\-amin\fP, \fB\-mtime\fP, \fB\-gid\fP, \fB\-inum\fP, \fB\-links\fP, +\fB\-size\fP, \fB\-uid\fP, \fB\-used\fP において指定できます。 そして以下のような指定方法があります。 .IP \fI+n\fP \fIn\fP より大きい。 .IP \fI\-n\fP \fIn\fP より小さい。 .IP \fIn\fP -ちょうど \fIn\fP。 +\fIn\fP にちょうど等しい。 +. .P +サポートされているテスト: .IP "\-amin \fIn\fP" -ファイルの最終アクセス日時が \fIn\fP 分前であれば真を返す。 +ファイルの最終アクセス時間が、 \fIn\fP 分前と比較して、 それよりも前か後かちょうど同じかをテストします。 -.IP "\-anewer \fIfile\fP" -ファイルの最終アクセス日時が、\fIfile\fP の内容更新日時よりも新しければ、真を返す。 -引き数 \fIfile\fP がシンボリックリンクで、しかも \fB\-H\fP や \fB\-L\fP オプションが有効になっている場合は、 -リンク先のファイルの内容更新日時が比較に使用されることになる。 +.IP "\-anewer \fIreference\fP" +現在ファイルの最終アクセス時間が、 \fIreference\fP (参照ファイル) の最終更新時間よりも、 新しいかどうかをテストします。 引数 +\fIreference\fP がシンボリックリンクであり、 \fB\-H\fP や \fB\-L\fP オプションが有効になっている場合は、 +リンク先ファイルの最終更新時間が常に利用されます。 .IP "\-atime \fIn\fP" -ファイルの最終アクセス日時が、基点となる時刻から計算して \fIn\fP 日前に当たれば、真を返す -(訳注: 基点となる時刻は、デフォルトでは \fBfind\fP を実行している今現在である)。 -ファイルの最終アクセス日時が何日前かを計算する際、時間差を -24 時間で割って出た小数点以下の端数は無視される。従って、\fB\-atime\fP \fB+1\fP -にマッチするためには、ファイルは少なくとも二日前にアクセスされていなければならない。 -(訳注: 1.5 日前は、1 日前と判定される。そして、\fB\-atime\fP \fB+1\fP は、2 日以上前である。 -なお、デフォルトの動作のように、現在時刻から数えて 24 時間前から 48 時間前までを -1 日前とするのではなく、今日の午前 0 時以前の 24 時間 (つまり、日常的な意味での昨日) -を 1 日前として計算したいのなら、位置オプション \fB\-daystart\fP を \fB\-atime\fP -の前に置けばよい。) +ファイルの最終アクセス時間が、 \fIn\fP*24 時間前と比較して、 それよりも前か後かちょうど同じかをテストします。 ファイルの最終アクセス時間が、 +24 時間の何倍であるかを割り算して計算する際に、 端数は無視されます。 したがって、 \fB\-atime\ +1\fP に一致するためには、 +ファイルは少なくとも 2 日前にアクセスされていなければなりません。 .IP "\-cmin \fIn\fP" -ファイルの最終ステータス変更日時が \fIn\fP 分前ならば真。 +ファイルステータスの最終変更時間が、 \fIn\fP 分前と比較して、 それよりも前か後かちょうど同じかをテストします。 -.IP "\-cnewer \fIfile\fP" -ファイルの最終ステータス変更日時が、\fIfile\fP の内容更新日時よりも新しければ、真を返す。 -引き数 \fIfile\fP がシンボリックリンクで、しかも \fB\-H\fP や \fB\-L\fP オプションが有効になっている場合は、 -リンク先のファイルの内容更新日時が比較に使用されることになる。 +.IP "\-cnewer \fIreference\fP" +現在ファイルの最終ステータス変更時間が、 \fIreference\fP (参照ファイル) の最終更新時間よりも、 新しいかどうかをテストします。 引数 +\fIreference\fP がシンボリックリンクであり、 \fB\-H\fP や \fB\-L\fP オプションが有効になっている場合は、 +リンク先ファイルの最終更新時間が常に利用されます。 .IP "\-ctime \fIn\fP" -ファイルの最終ステータス変更日時が、基点となる時刻から計算して \fIn\fP 日前に当たれば、真を返す -(訳注: 基点となる時刻は、デフォルトでは \fBfind\fP を実行している今現在である)。 -何日前かを計算する際、時間差を 24 時間で割った結果を丸めるせいで、 -ファイルのステータス変更日時の解釈にどんな影響が出るかについては、 -\fB\-atime\fP の説明を参照していただきたい。 -(訳注: 要するに、割り算の際に、小数点以下の端数を切り捨てるということ。 -なお、デフォルトの動作のように、現在時刻から数えて 24 時間前から 48 時間前までを -1 日前とするのではなく、今日の午前 0 時以前の 24 時間 (つまり、日常的な意味での昨日) -を 1 日前として計算したいのなら、位置オプション \fB\-daystart\fP を \fB\-ctime\fP -の前に置けばよい。) +ファイルステータスの最終変更時間が、 \fIn\fP*24 時間前と比較して、 +それよりも前か後かちょうど同じかをテストします。ファイルステータスの更新時間の解釈にあたって、丸め処理がどのように影響するかについては、 +\fB\-atime\fP の説明を参照してください。 .IP \-empty -ファイルが空で、通常のファイルかディレクトリならば真。 +ファイルが空であって、 通常のファイルかディレクトリであるかどうかをテストします。 .IP \-executable -実行可能なファイルや (ファイル名解決の見地から見て) 検索可能なディレクトリにマッチする。 -検査 \fB\-perm\fP が ACL (アクセス・コントロール・リスト) -などのパーミッション制御の仕組みを無視するのに対して、この検査は ACL -なども考慮に入れる。この検査は \fBaccess\fP(2) システムコールを使用しているので、UID -マッピング (または root\-squashing) を行っている -NFS サーバがあると、正確な結果を得られないことがある。なぜなら、たいていのシステムでは -\fBaccess\fP(2) をクライアントのカーネルで実装しており、それ故、サーバ側に保持されている -UID マッピング情報を利用できないからだ。この検査はひとえに -\fBaccess\fP(2) システムコールの結果に基づいているので、 -この検査が真を返したからと言って、そのファイルが実際に実行できるとはかぎらない。 +実行可能なファイルか、 あるいは、 現在のユーザーが (ファイル名解決の観点で) 検索可能なディレクトリであるかどうかをテストします。 このテストは、 +アクセスコントロールリスト (access control list; ACL) や、 この他のパーミッション機能を考慮します。 ちなみに、 テスト +\fB\-perm\fP では無視されます。 本テストは、 システムコール \fBaccess\fP(2) を利用するので、 NFS サーバーが UID マッピング +(つまり root squash) を行っている場合に、 適切に動作しない場合があります。 多くのシステムでは、 クライアントのカーネルにおいて +\fBaccess\fP(2) を実装しているため、 サーバー側にある UID マッピング情報を利用できないからです。 このテストは、 +\fBaccess\fP(2) システムコールの結果だけに基づいているため、 このテストが true となったファイルが、 +実際に実行できるかどうかの保証はありません。 .IP \-false -常に偽を返す。 +必ず false を返します。 .IP "\-fstype \fItype\fP" -ファイルが置かれているファイルシステムが \fItype\fP ならば、真を返す。 -有効なファイルシステムは、Unix の系統によって様々である。 -Unix の系統次第で指定可能なファイルシステムを不完全ながら挙げると、 -ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K などがある。アクション \fB\-printf\fP -で書式指定子 %F を使えば、現在使用中のファイルシステムのタイプが何かを知ることができる。 +ファイルが存在するファイルシステムが、 \fItype\fP かどうかをテストします。 いろいろな Unix システムに対して、 +有効なファイルシステムは変わります。 Unix などの各種システムにおいて、 許容されるファイルシステムタイプを、 その一部だけあげてみると、 ufs, +4.2, 4.3, nfs, tmp, mfs, S51K, S52K といったものです。 \fB\-printf\fP のディレクティブ %F を使えば、 +現在のファイルシステムタイプを確認することができます。 .IP "\-gid \fIn\fP" -ファイルのグループ ID 番号が \fIn\fP ならば真。 +ファイルのグループ ID 番号が、 \fIn\fP と比較して、 それよりも小さいか大きいかちょうど同じかをテストします。 .IP "\-group \fIgname\fP" -ファイルの属するグループが \fIgname\fP ならば真 (グループ ID 番号で指定してもよい)。 +ファイルの属するグループが \fIgname\fP かどうかをテストします (グループ ID 番号による指定も可)。 .IP "\-ilname \fIpattern\fP" -\fB\-lname\fP と同じだが、大文字小文字を区別しない。\fB\-L\fP や \fB\-follow\fP -オプションが有効な場合は、シンボリックリンクがリンク切れしている場合を除き、この検査は偽を返す。 +\fB\-lname\fP と同様ですが、 大文字小文字は区別しません。 \fB\-L\fP または \fB\-follow\fP オプションが有効な場合、 +シンボリックリンクが切れていない限り、 このテストは false を返します。 .IP "\-iname \fIpattern\fP" -\fB\-name\fP と同じだが、大文字小文字を区別しない。 -たとえば、パターン `fo*' や `F??' は、`Foo', `FOO', `foo', `fOo' -といったファイル名とマッチする。パターン `*foo*' は、`.foobar' -というファイルともマッチすることになる。 +\fB\-name\fP と同様ですが、 大文字小文字は区別しません。 たとえば、 パターン `fo*' や `F??' は、 `Foo', `FOO', +`foo', `fOo' などのファイル名に一致します。 また、 パターン `*foo*' は、 `.foobar' というファイルにも一致します。 .IP "\-inum \fIn\fP" -ファイルの inode 番号が \fIn\fP ならば真。 -たいていの場合、この検査より、\fB\-samefile\fP を使った方が簡単である。 +ファイルの i ノード番号が、 \fIn\fP と比較して、 それよりも小さいか大きいかちょうど同じかをテストします。 普通はこれよりも、 +\fB\-samefile\fP を使った方が簡単です。 .IP "\-ipath \fIpattern\fP" -\fB\-path\fP と同じだが、大文字小文字を区別しない。 +\fB\-path\fP と同様です。 ただし大文字小文字を区別しません。 .IP "\-iregex \fIpattern\fP" -\fB\-regex\fP と同じだが、大文字小文字を区別しない。 +\fB\-regex\fP と同様です。 ただし大文字小文字を区別しません。 .IP "\-iwholename \fIpattern\fP" -\fB\-ipath\fP 参照。この別名は移植性で \fB\-ipath\fP に劣る。 +\fB\-ipath\fP を参照してください。 この別名は、 \fB\-ipath\fP よりも移植性に劣ります。 .IP "\-links \fIn\fP" -ファイルのハードリンク数が \fIn\fP ならば真。 +ファイルが持つハードリンクの数が、 \fIn\fP と比較して、 小さいか大きいかちょうど同じかをテストします。 .IP "\-lname \fIpattern\fP" -ファイルがシンボリックリンクであり、リンク先として指定されているパスがシェルのパターン -\fIpattern\fP にマッチすれば、真を返す。メタ文字は、`/' や `.' を例外扱いしない。 -\fB\-L\fP や \fB\-follow\fP オプションが有効な場合は、シンボリックリンクがリンク切れしている場合を除き、この検査は偽を返す。 +ファイルがシンボリックリンクであって、 その内容がシェルパターン \fIpattern\fP に一致するかどうかをテストします。 メタ文字は、 `/' や +`.\&' を特別扱いしません。 \fB\-L\fP または \fB\-follow\fP オプションが有効な場合には、 シンボリックリンクが切れていない限り、 +このテストは false を返します。 .IP "\-mmin \fIn\fP" -ファイルの最終内容更新日時が \fIn\fP 分前であれば真。 +ファイルの最終更新時間が、 \fIn\fP 分前と比較して、 それよりも前か後かちょうど同じかをテストします。 .IP "\-mtime \fIn\fP" -ファイルの最終内容更新日時が、基点となる時刻から計算して \fIn\fP 日前に当たれば、真を返す -(訳注: 基点となる時刻は、デフォルトでは \fBfind\fP を実行している今現在である)。 -何日前かを計算する際、時間差を 24 時間で割った結果を丸めるせいで、 -ファイルの内容更新日時の解釈にどんな影響が出るかについては、 -\fB\-atime\fP の説明を参照していただきたい。 -(訳注: 要するに、割り算の際に、小数点以下の端数を切り捨てるということ。 -なお、デフォルトの動作のように、現在時刻から数えて 24 時間前から 48 時間前までを -1 日前とするのではなく、今日の午前 0 時以前の 24 時間 (つまり、日常的な意味での昨日) -を 1 日前として計算したいのなら、位置オプション \fB\-daystart\fP を \fB\-mtime\fP -の前に置けばよい。) +ファイルの最終更新時間が、 \fIn\fP*24 時間前と比較して、 それよりも前か後かちょうど同じかをテストします。 何日前かを計算する際、 時間差を 24 +時間で割った結果を丸めるため、 ファイル更新時間の解釈にあたって、 その処理がどのように影響するかについては、 \fB\-atime\fP +の説明を参照してください。 .IP "\-name \fIpattern\fP" -ファイルやディレクトリのベースネーム (パスから最後の要素だけを残して、先行するディレクトリを取り去ったもの) -が、シェルのパターン \fIpattern\fP にマッチすれば、真を返す。検査 \fB\-name\fP -でマッチするかどうかを調べられるファイル名は、先行するディレクトリを除去したものだから、スラッシュが含まれることはない。従って、`\-name a/b' -は何にもマッチしないことになる (\fB\-name\fP ではなく、多分 \fB\-path\fP -を使う必要があるだろう)。そんなことをしようとすると、環境変数 POSIXLY_CORRECT -が設定されていない場合は、警告メッセージが出る。メタ文字 (`*', `?', `[]') -は、ベースネームの先頭にある `.' とマッチする -(findutils\-4.2.2 からこのように変更になった。下記のセクション「規格への準拠」を参照)。 -あるディレクトリとそれ以下にあるファイルをまとめて無視するには、\fB\-prune\fP を使うとよい。 -一例が \fB\-path\fP の説明中にある。波カッコ ('{}') は特殊文字として認識されない。 -この点、bash を含む一部のシェルで、シェル・パターン中の波カッコに特別な意味を付与しているのと異なっている。 -ファイル名のマッチングは、\fBfnmatch\fP(3) ライブラリ関数を用いて行われる。 -パターンを引用符で囲むのを忘れないように。シェルによって展開されてしまわないようにするためである。 - -.IP "\-newer \fIfile\fP" -ファイルが \fIfile\fP よりも最近に内容を更新されていれば、真を返す。 -引き数 \fIfile\fP がシンボリックリンクで、しかも \fB\-H\fP や \fB\-L\fP -オプションが有効になっている場合は、リンク先のファイルの内容更新日時が比較に使用されることになる。 +ファイルのベース名 (パス名から、 先行するディレクトリを取り除いたもの) が、 シェルのパターン \fIpattern\fP +に一致するかどうかをテストします。 先行するディレクトリを取り除いているので、 \fB\-name\fP を使って一致の確認を行うファイル名には、 +スラッシュが含まれないものとして扱われます。 つまり `\-name a/b' としても、 一致するものはありません (その場合は、 おそらく +\fB\-path\fP を用いる必要があります)。 これを行ってしまった場合、 環境変数 \fBPOSIXLY_CORRECT\fP が設定されていない限りは、 +警告メッセージが出力されます。 メタ文字 (`*', `?', `[]') は、 ベース名の先頭にある `.\&' に一致します (これは +findutils\-4.2.2 から変更されました。以降のセクション「規格への準拠」を参照してください)。 1 +つのディレクトリとそこに含まれるファイルを無視したい場合は、 ディレクトリツリー内の全ファイルを確認するのではなく、 \fB\-prune\fP +を使います。\fB\-prune\fP の説明において、 例を説明しているので参照してください。 波カッコ ('{}') は、 特別な文字としては扱われません。 +bash などのシェルにおいては、 シェルパターン内の波カッコに特別な意味を持つものがありますが、 この点は異なります。 ファイル名のマッチングは、 +\fBfnmatch\fP(3) ライブラリ関数を用いて行われます。 シェルによってパターンが展開されないように、 +パターンはクォートで囲むことを忘れないでください。 + +.IP "\-newer \fIreference\fP" +対象ファイルの最終更新時間が、 \fIreference\fP ファイルの最終更新時間よりも、 最新であるかどうかをテストします。 \fIreference\fP +がシンボリックリンクであって、 \fB\-H\fP または \fB\-L\fP オプションが有効である場合は、 リンク先ファイルの更新時間が用いられます。 .IP "\-newerXY \fIreference\fP" -検査対象ファイルのタイムスタンプの \fIX\fP 日時が、リフェレンスファイル -\fIreference\fP のタイムスタンプの \fIY\fP 日時より新しければ、真を返す。 -\fIX\fP と \fIY\fP の位置に来る文字は、以下のどの文字でもよい。 +対象ファイルのタイムスタンプ \fIX\fP が、 \fIreference\fP ファイルのタイムスタンプ \fIY\fP より、 新しいかどうかをテストします。 +\fIX\fP と \fIY\fP の位置に記述する文字は、 以下の文字とします。 .TS ll @@ -542,160 +467,125 @@ ll ll ll llw(2i). -a ファイルのアクセス日時 -B ファイルの作成日時 -c inode のステータスが変更された日時 -m ファイルの内容が更新された日時 -t \fIreference\fP が日時の直接表現として解釈される +a \fIreference\fP ファイルのアクセス時間 +B \fIreference\fP ファイルの生成時間 +c \fIreference\fP ファイルの i ノードステータスが変更された時間 +m \fIreference\fP ファイルの内容更新時間 +t \fIreference\fP に直接時間表現が書かれたとして解釈 .TE -組み合わせによっては、無効なものもある。たとえば、\fIX\fP に \fIt\fP を指定しても無効である。 -組み合わせの中には、すべてのシステムで実装されているとはかぎらないものもある。 -たとえば、\fIB\fP はすべてのシステムでサポートされているわけではない。 -\fIXY\fP の無効な組み合わせやサポートされていない組み合わせを指定すると、致命的エラーが生じる。 -日時を直接指定すると、それは GNU \fBdate\fP の \fB\-d\fP オプションに対する引き数と同じように解釈される。 -リファレンスファイルの作成日時を使用しようとした場合に、作成日時が特定できないと、致命的エラーのメッセージが出力される。 -また、検査対象ファイルの作成日時を参照する検査を指定した場合に、 -作成日時がわからない環境では、その検査はいかなるファイルに対しても失敗することになる -(訳注: この場合、失敗するというのは、検査が偽になることではなく、エラーになることのようだ。ご自分の環境で確かめていただきたい)。 +組み合わせによっては、 無効になるものも発生します。 たとえば、 \fIX\fP に \fIt\fP を指定しても無効です。 またシステムによっては、 +特定の組み合わせを実装していない場合があります。 たとえば \fIB\fP は、 すべてのシステムでサポートされているわけではありません。 指定された +\fIXY\fP の組み合わせが、 無効や未サポートの場合は、 致命的エラーが発生します。 時間表現は、 GNU \fBdate\fP における \fB\-d\fP +オプションに対する引数と同様のものとして解釈されます。 参照ファイルの生成時間を使用しようとて、 その生成時間が決定できなかった場合は、 +致命的エラーになります。 また、 対象ファイルの生成時間を参照するテストを用いた際に、 生成時間が不明な場合は、 そのテストは失敗します。 .IP \-nogroup -ファイルのグループ ID 番号に対応するグループが、システムに存在しない場合に、真を返す。 +ファイルのグループ ID 番号が、 システムに存在していないことをテストします。 .IP \-nouser -ファイルのユーザ ID 番号に対応するユーザが、システムに存在しない場合に、真を返す。 +ファイルのユーザー ID 番号が、 システムに存在しないことをテストします。 .IP "\-path \fIpattern\fP" -ファイル名がシェルのパターン \fIpattern\fP にマッチすれば、真を返す。 -メタ文字は、`/' や `.' を例外扱いしない。従って、たとえば、 -.br -.in +1i +ファイル名が、 シェルのパターン \fIpattern\fP に一致するかどうかをテストします。 メタ文字は、 `/' や `.\&' を特別扱いしません。 +したがってたとえば、 +.in +4m +.nf find . \-path "./sr*sc" +.fi +.in +は、 \fI./src/misc\fP というディレクトリ (それが存在している場合) の内容を表示します。 ディレクトリツリー全体を対象としないのであれば、 +ツリー内の各ファイルを確認していくのではなく、 \fB\-prune\fP を用います。 パターン一致を確認するようなテストは、 +ファイル名すべてに対して適用されます。 つまりそのファイル名は、 コマンドライン上から指定された検索開始点から始まる、 検索対象すべてです。 +このパターンにおいて、 絶対パスを指定するなら、 検索開始点も絶対パスでなければ意味がありません。 つまり以下のようなコマンドでは、 +どのファイルも一致しません。 .br -.in -1i -は、`./src/misc' というディレクトリを (存在していれば) 表示することになる。 -あるディレクトリ以下をすべて無視するには、そこに存在するファイルを一つ一つ抑止するよりも、\fB\-prune\fP -を使用した方がよい。たとえば、ディレクトリ `src/emacs' -と、その下にあるファイルやディレクトリのすべてをスキップし、それ以外のファイルが見つかったら、その名前を表示するとしよう。そのためには、こんな風にする。 -.br -.in +1i -find . \-path ./src/emacs \-prune \-o \-print -.br -.in -1i -パターンマッチの検査は、パスを含むファイル名の全体に対して行われるが、 -そうしたファイル名は、コマンドラインで指定した探索開始点の一つから始まっていることに注意してしていただきたい。 -だから、\fB\-path\fP の引き数に絶対パス名を使用することに意味があるのは、 -関連する探索開始点がこちらも絶対パスであるときだけだろう。 -従って、次のコマンドは 何にもマッチしないことになる。 -.br -.in +1i +.in +4m +.nf find bar \-path /foo/bar/myfile \-print -.br -.in -1i -\fBfind\fP は、\fB\-path\fP の引き数を、目下検査してるファイルのディレクトリ名とベースネームを連結したものと比較する。 -その連結したものの末尾がスラッシュになることは絶対にないので、スラッシュで終わる -\fB\-path\fP の引き数は、何にもマッチしないことになる -(ただし、コマンドラインで指定された探索開始点となら、場合によってはマッチするかもしれないが)。 -\fB\-path\fP という述語は、HP\-UX の \fBfind\fP でもサポートされており、 -POSIX 規格の次期バージョンでも採用されることになるだろう -(訳注: 実際に POSIX 2008 で採用されている)。 +.fi +.in +\fBfind\fP が \fB\-path\fP の引数と比較するのは、 その時点で対象としているファイルのディレクトリとベース名を連結した文字列です。 +その文字列の末尾がスラッシュになることはないため、 \fB\-path\fP の引数の末尾にスラッシュを指定すると、 何にも一致しないことになります。 +(ただし、 コマンドラインで指定された検索開始ポイントには、 おそらく一致します)。 述語表現 \fB\-path\fP は、 HP\-UX の \fBfind\fP +でもサポートされていて、 POSIX 2008 規格に存在します。 .IP "\-perm \fImode\fP" -ファイルの許可属性が \fImode\fP (8 進数表現でもシンボル表現でもよい) とまったく同じなら、真を返す。 -\fImode\fP 指定のこの形式では、許可属性がぴったり一致することを要求することになるので、 -シンボルによる表現でこの形式を使おうとすると、かなり複雑なモード文字列を指定しなければならないかもしれない。 -たとえば `\-perm g=w' は、許可属性が 0020 のファイルにしかマッチしない -(すなわち、許可属性のうち、グループの書き込み許可のみが立っているファイルだ)。 -従って、\fImode\fP の前に `/' や `\-' を付ける形式を使いたくなることの方が、多分多いだろう。 -たとえば、`\-perm \-g=w' とすれば、グループの書き込み許可があるファイルなら、どんなファイルにもマッチすることになる。 -具体例については「用例」セクションをご覧いただきたい。 +ファイルの許可属性が \fImode\fP (8 進数表現またはシンボル表現) に一致するかどうかをテストします。 \fImode\fP 指定のこの形式では、 +完全一致が求められるので、 この形式をシンボリックモードで使う場合には、 モード文字列の指定が多少複雑になるかもしれません。 たとえば `\-perm +g=w' は、 許可属性が 0020 のファイルにのみ一致します (つまり、 グループの書き込み権限のみを設定します)。 おそらく、 `/' や `\-' +を用いる形式を必要とすることがあります。 たとえば、 `\-perm \-g=w' とすれば、 グループの書き込み許可があるファイルに一致します。 +具体例については「例」セクションを参照してください。 .IP "\-perm \-\fImode\fP" -\fImode\fP で指定した許可属性ビットのすべてが、ファイルでも立っていれば、真を返す。 -\fImode\fP 指定のこの形式でも、シンボルによる許可属性表現が使用できる。 -そこで、この形式ではシンボルによる表現を使いたくなることが多いだろう。 -シンボルによる表現を使用する場合は、`u' や `g' や `o' を きちんと指定しなければならない。 -具体例については「用例」セクションをご覧いただきたい。 +\fImode\fP で指定した許可属性ビットすべてが、 対象ファイルのものに一致するかどうかをテストします。 この形式でも、 +シンボリックモード指定が可能です。 このモードは、 ごく普通に用いたくなるはずです。 シンボリックモードでは、 `u'、 `g'、 `o' +を用いる必要があります。 具体例については「例」セクションを参照してください。 .IP "\-perm /\fImode\fP" -\fImode\fP で指定した許可属性ビットのどれかが、ファイルでも立っていれば、真を返す。 -\fImode\fP 指定のこの形式でも、シンボルによる許可属性表現が使用できる。 -シンボルによる表現を使用する場合は、`u' や `g' や `o' をきちんと指定しなければならない。 -具体例については「用例」セクションをご覧いただきたい。なお、\fImode\fP -で許可属性ビットが一つも立っていない場合、この検査はいかなるファイルにもマッチすることになる -(これは、\fB\-perm\fP \fB\-000\fP と動作に一貫性を持たせるための変更である。 -(訳注: \fB\-perm\fP \-\fImode\fP と \fB\-perm\fP /\fImode\fP -のどちらの指定法においても、0 は何であってもよいを意味するようにしたということ))。 +\fImode\fP で指定した許可属性ビットの一部が、 対象ファイルのものに一致するかどうかをテストします。 この形式でも、 +シンボリックモード指定が可能です。 シンボリックモードでは、 `u'、 `g'、 `o' を用いる必要があります。 +具体例については「例」セクションを参照してください。 なお、 \fImode\fP の許可属性ビットが何も設定されていない場合、 このテストは、 +どんなファイルにも一致します (この動作は、 \fB\-perm\ \-000\fP と一貫性を持たせるためです)。 .IP "\-perm +\fImode\fP" -この形式は、今ではサポートされていない (2005 年以来、非推奨だった)。 -代わりに \fB\-perm /\fP\fImode\fP を使用すること。 +この書式は、 もうサポートされていません (2005 年以来、 非推奨となっています)。 代わりに \fB\-perm /\fP\fImode\fP +を用いてください。 .IP \-readable -読み込み可能なファイルにマッチする。検査 \fB\-perm\fP が -ACL (アクセス・コントロール・リスト) などのパーミッション制御の仕組みを無視するのに対して、この検査は ACL なども考慮に入れる。 -この検査は \fBaccess\fP(2) システムコールを使用しているので、UID マッピング (または root\-squashing) -を行っている NFS サーバがあると、正確な結果を得られないことがある。なぜなら、たいていのシステムでは -\fBaccess\fP(2) をクライアントのカーネルで実装しており、それ故、サーバ側に保持されている -UID マッピング情報を利用できないからである。 +現在のユーザーによって読み込み可能なファイルであるかどうかをテストします。 このテストは、 アクセスコントロールリスト (access control +list; ACL) や、 その他のパーミッション機能を考慮します。 ちなみに、 テスト \fB\-perm\fP では無視されます。 本テストは、 +システムコール \fBaccess\fP(2) を利用するので、 NFS サーバーが UID マッピング (つまり root squash) +を行っている場合に、 適切に動作しない場合があります。 多くのシステムでは、 クライアントのカーネルにおいて \fBaccess\fP(2) +を実装しているため、 サーバー側にある UID マッピング情報を利用できないからです。 .IP "\-regex \fIpattern\fP" -ファイル名が正規表現 \fIpattern\fP にマッチすれば、真を返す。 -これはパスを含むファイル名全体に対するマッチであって、ベースネームの検索ではない。 -だから、たとえば、`./fubar3' という名前のファイルにマッチさせるために、 -正規表現 `.*bar.' や `.*b.*3' は使用できるが、`f.*r3' は使用できない。 -\fBfind\fP が理解する正規表現は、デフォルトでは Emacs の正規表現だが、 -これは \fB\-regextype\fP オプションで変更することができる。 +ファイル名が正規表現 \fIpattern\fP に一致するかどうかをテストします。 この処理は、 パス全体への一致を確認するものであって、 +ファイル検索ではありません。 したがってたとえば、 `./fubar3' ファイルに一致する正規表現として、 `.*bar.' や `.*b.*3' +は利用できますが、 `f.*r3' は利用できません。 \fBfind\fP が扱う正規表現のデフォルトは、 Emacs 正規表現です ('.' +が改行に一致する点は除きます)。 これは、 \fB\-regextype\fP オプションを用いて変更することができます。 .IP "\-samefile \fIname\fP" -ファイルが \fIname\fP と同じ inode を参照していれば、真を返す。 \fB\-L\fP が有効な場合、シンボリックリンクも真を返す。 +対象ファイルが、 \fIname\fP と同じ i ノードを参照しているかどうかをテストします。 \fB\-L\fP が有効であれば、 +シンボリックリンクを対象とすることができます。 .IP "\-size \fIn\fP[cwbkMG]" -ファイルが \fIn\fP 単位分の領域を使用していれば、真を返す -(対象となるファイルのサイズを、単位にまで切り上げて比較する)。以下の接尾辞が使える。 +ファイルが \fIn\fP 単位分の容量と比較して、 それよりも小さいか大きいかちょうど同じかをテストします。 ここでは丸め処理が行われます。 +以下のサフィックスが利用できます。 .RS -.IP "[\fB訳注\fP]:" 8 -ブロック数を指定するときは、注意していただきたい。 -\fB\-size\fP では、検査対象ファイルのブロック数の算出を、単にファイルのサイズを -512 で割り、その結果を切り上げて整数にすることで行っている。 -これは、\fBstat\fP コマンドの出力や POSIXLY_CORRECT が設定されているときの -\fBls \-s\fP の結果と、同じではないことが多い。\fBstat\fP や \fBls\fP -は、ファイルに対するディスクスペースの割当が、ファイルシステムのブロックサイズ -(ext4 なら、たいてい 4096 バイト、つまり 8 ブロック) -の倍数で行われることを考慮に入れているのである。なお、アクション -\fB\-printf\fP における `%b' の出力は、\fBstat\fP などと同じである。 .IP `b' -単位はブロック。1 ブロックは 512 バイト。(これが接尾辞を使わないときの デフォルトである) +512 バイトブロックを表します (サフィックスの指定がない場合は、 これがデフォルトとなります)。 .IP `c' -単位はバイト。 +バイトを表します。 .IP `w' -単位はワード。1 ワードは 2 バイト。 +2 バイトワードを表します。 .IP `k -単位はキビバイト (1 キビバイトは 1024 バイト)。 +キビバイトを表します (kibibyte, KiB, 1024 バイト単位)。 .IP `M' -単位はメビバイト (1 メビバイトは 1048576 バイト)。 +メビバイトを表します (mebibyte, MiB, 1024 * 1024 単位 = 1\|048\|576 バイト)。 .IP `G' -単位はギビバイト (1 ギビバイトは 1073741824 バイト)。 +ギビバイトを表します (gibibyte, GiB, 1024 * 1024 * 1024 単位 = +1\|073\|741\|8241073741824)。 .RE .IP -サイズには間接ブロック (indirect block) の分は含まれないが、穴空きファイル -(sparse file) における、実際には割り当てられていないブロックの分は含まれる。 -アクション \fB\-printf\fP の `%k' や `%b' 書式指定子とは、穴空きファイルの扱い方が違うことを心にとめておいていただきたい。 -また、接尾辞 `b' は常に 512 バイトのブロックを意味し、1 キロバイトのブロックを指すことはない。 -その点で、アクション \fB\-ls\fP の動作とは異なっている。 -数値の前に + や \- を付けると、他の場合と同様、「より大きい」や「より小さい」を意味することになるが、 -ファイルのサイズは、単位以下の部分が、単位にまで切り上げられることに留意していただきたい -(だから、1 byte のファイルは、\fB\-size \-1M\fP にマッチしない。(訳注: \fB\-size 1M\fP とならマッチする))。 +サイズというのは単純に、 システムコールの lstat (あるいは stat) に含まれている struct stat の メンバー st_size +のことであり、 上に示すようにして切り上げられます。言い換えると、 その結果は \fBls\ \-l\fP で得られるものと一致します。\fB\-printf\fP +における `%k' と `%b' の書式指定子は、 スパースファイルに対して、 異なる扱いをする点に注意してください。 サフィックス `b' は、 常に +512 バイトブロックを表していて、 1024 バイトブロックを表すことはありません。 この点は、 \fB\-ls\fP の動作とは異なるところです。 +.IP +プレフィックスの + と \- は、 ごく普通に、 それより上、 それより下、 を表します。 したがって、 \fIn\fP とちょうど同じ数には一致しません。 +サイズとは、 次の数単位に向けて切り上げられることに注意してください。 つまり \fB\-size\ \-1M\fP というのは、 \fB\-size\ \-1\|048\|576c\fP と同じではありません。 前者は、 空のファイルにしか一致しません。 また後者は、 バイトサイズが 0 から +1,048,575 までのファイルに一致します。 .IP \-true -常に真。 +常に true です。 .IP "\-type \fIc\fP" -ファイルのタイプが \fIc\fP であれば真。(訳注: \fIc\fP の位置には実際には以下の文字が来る。) +ファイルタイプが \fIc\fP であるかどうかをテストします。 .RS .IP b -ブロック・スペシャルファイル (バッファあり) +ブロックスペシャルファイル (バッファーあり) .IP c -キャラクタ・スペシャルファイル (バッファなし) +キャラクタースペシャルファイル (バッファーなし) .IP d ディレクトリ .IP p @@ -703,194 +593,178 @@ UID マッピング情報を利用できないからである。 .IP f 通常のファイル .IP l -シンボリックリンク。オプション \fB\-L\fP や \fB\-follow\fP が有効な場合、 -シンボリックリンクがリンク切れの場合を除いて、この検査が真になることはない。 -\fB\-L\fP が有効なときにシンボリックリンクを検索したかったら、\fB\-xtype\fP を使うべきである。 +シンボリックリンク。 オプション \fB\-L\fP や \fB\-follow\fP が有効な場合、 シンボリックリンク切れの場合を除いて、 このテストが true +になることはありません。 \fB\-L\fP が有効なときに、 シンボリックリンクを検索するには、 \fB\-xtype\fP を用いてください。 .IP s ソケット .IP D -ドア (Solaris の場合) +ドア (door) (Solaris の場合) .RE +.IP +一度に複数のファイルタイプを検索したい場合は、 タイプを表す英字を、 カンマ `,' で区切ったリストで指定します。 (GNU 拡張) .IP "\-uid \fIn\fP" -ファイル所有者のユーザ ID 番号が \fIn\fP ならば真。 +ファイル所有者のユーザー ID 番号が、 \fIn\fP と比較して、 それよりも小さいか大きいかちょうど同じかをテストします。 .IP "\-used \fIn\fP" -ファイルが最後にアクセスされたのが、ファイルの最終ステータス変更日時より -\fIn\fP 日後ならば、真を返す。 +ファイルのステータスが変更されてから、 ファイルにアクセスした最終時間が、 \fIn\fP 日間と比較して、 小さいか大きいかちょうど同じかをテストします。 .IP "\-user \fIuname\fP" -ファイルの所有者が \fIuname\fP というユーザならば真 (ユーザ ID 番号で指定してもよい)。 +ファイルの所有者が、 \fIuname\fP というユーザーであるかどうかをテストします (ユーザー ID 番号による指定も可)。 .IP "\-wholename \fIpattern\fP" -\fB\-path\fP と同じである。この別名は移植性で \fB\-path\fP に劣る。 +\fB\-path\fP を参照してください。 この別名は、 \fB\-path\fP よりも移植性に劣ります。 .IP \-writable -書き込み可能なファイルにマッチする。検査 \fB\-perm\fP が ACL -(アクセス・コントロール・リスト) などのパーミッション制御の仕組みを無視するのに対して、 -この検査は ACL なども考慮に入れる。この検査は \fBaccess\fP(2) -システムコールを使用しているので、UID マッピング (または root\-squashing) -を行っている NFS サーバがあると、正確な結果を得られないことがある。なぜなら、たいていのシステムでは -\fBaccess\fP(2) をクライアントのカーネルで実装しており、それ故、サーバ側に保持されている -UID マッピング情報を利用できないからである。 +現在のユーザーによって書き込み可能なファイルであるかどうかをテストします。 このテストは、 アクセスコントロールリスト (access control +list; ACL) や、 その他のパーミッション機能を考慮します。 ちなみに、 テスト \fB\-perm\fP では無視されます。 本テストは、 +システムコール \fBaccess\fP(2) を利用するので、 NFS サーバーが UID マッピング (つまり root squash) +を行っている場合に、 適切に動作しない場合があります。 多くのシステムでは、 クライアントのカーネルにおいて \fBaccess\fP(2) +を実装しているため、 サーバー側にある UID マッピング情報を利用できないからです。 .IP "\-xtype \fIc\fP" -検査の対象となるファイルがシンボリックリンクでないかぎり、\fB\-type\fP と同じである。 -ファイルがシンボリックリンクのときは、以下のように動作する。 -\fB\-H\fP や \fB\-P\fP オプションが指定された場合は、タイプが \fIc\fP -のファイルに対するリンクならば、真を返す。また、\fB\-L\fP -オプションが指定されている場合は、\fIc\fP が `l' ならば、真を返す。 -言い換えると、ファイルがシンボリックであるとき、\fB\-xtype\fP -は、\fB\-type\fP がチェックしない方のファイルのタイプをチェックするわけだ。 +対象ファイルがシンボリックリンクでなければ、 \fB\-type\fP と同様です。 シンボリックリンクのときは、 以下のように動作します。 \fB\-H\fP や +\fB\-P\fP オプションの指定時は、 リンク先がタイプ \fIc\fP のファイルであれば、 true を返します。 \fB\-L\fP オプションの指定時は、 +\fIc\fP が `l' ならば true を返します。 言い換えると、 シンボリックリンクに対して、 \fB\-xtype\fP は、 \fB\-type\fP +がチェックしないファイルタイプをチェックします。 .IP "\-context \fIpattern\fP" -(SELinux が有効なときのみ) ファイルのセキュリティ・コンテキストが -glob のパターン (訳注: つまり、シェル式のパターン) -\fIpattern\fP にマッチすれば、真を返す。 +(SELinux 有効時のみ) 対象ファイルのセキュリティコンテキストが glob パターン \fIpattern\fP に一致するかどうかをテストします。 .SS アクション .IP \-delete -ファイルを消去する。消去に成功すれば、真を返す。 -消去に失敗した場合は、エラーメッセージを表示する。 -\fB\-delete\fP に失敗した場合の \fBfind\fP の終了ステータスは、ゼロ以外である -(\fBfind\fP が最終的に終了したときの終了ステータスのことだ)。\fB\-delete\fP -を使用すると、自動的に `\fB\-depth\fP' オプションが有効になる。 - -\fB警告\fP: 忘れないでいただきたいが、find のコマンドラインは一つの式 (expression) -として評価されるので、一番最初に \fB\-delete\fP を指定すると、 -\fBfind\fP は、指定された探索の開始点以下にあるものを、ことごとく消去しようとする。 -後で \fB\-delete\fP を付けて使用するつもりで、\fBfind\fP -のコマンドラインをテスト実行するときは、\fB\-depth\fP を明示的に指定するとよい。 -そうすれば、後で「こんなはずではなかった」と慌てないですむ。 -\fB\-delete\fP を指定すると自動的に \fB\-depth\fP が有効になるので、\fB\-prune\fP -を \fB\-delete\fP と一緒に使っても役に立たない。 +ファイルまたはディレクトリを削除します。 削除に成功すると true を返します。 削除に失敗した場合は、 +エラーメッセージを表示して、 ゼロ以外の終了ステータスを返します (最終終了するときです)。 + +\fB警告\fP: \fBfind\fP はコマンドラインを式として評価する点を忘れないでください。 したがって \fB\-delete\fP を一番初めに記述すると、 +それは \fBfind\fP に対して、 検索開始ポイント以下のものをすべて削除させることになります。 + +コマンドラインから \fB\-delete\fP オプションを指定すると、 自動的に \fB\-depth\fP オプションがオンとなります。 一方で +\fB\-depth\fP は \fB\-prune\fP を無効にするので、 \fB\-delete\fP アクションは \fB\-prune\fP と同時に用いることはできません。 + +ユーザーの中ではよく、 コマンドライン上において \fB\-delete\fP の前に \fB\-print\fP を指定して、 +削除が実際にどのように行われるかをテストしようとします。 予期しない結果を起こさないためにも、 そのようなテストを行うときから、 \fB\-depth\fP +オプションを明示的に指定することを忘れないでください。 + +\fB\-delete\fP アクションは、 ディレクトリが空でない場合には削除に失敗します。 + +\fB\-ignore_readdir_race\fP オプションとともに、 このオプションを指定し、 さらに、 親ディレクトリを読み込んだ後に、 +対象ファイルが消失している状況が発生した場合、 \fB\-delete\fP アクションからのエラーは無視されます。 その場合には、 診断エラーは出力されず、 +終了コードをゼロ以外には変えずに \fB\-delete\fP アクションからの返り値も true になります。 + .IP "\-exec \fIcommand\fP ;" -\fIcommand\fP を実行する。\fIcommand\fP の返り値が 0 ならば、真を返す。 -\fBfind\fP のコマンドラインで指定されているこれ以降の引き数は、`;' という引き数が現れるまで、すべてコマンドに対する引き数と見なされる。 -文字列 `{}' は、それがコマンドの引き数中に現れるすべての場所で、現在処理中のファイル名に置き換えられる。 -\fBfind\fP の一部の版とは違い、`{}' は引き数中の一ヶ所でしか使えないわけではない。 -こうした構文の要素 (訳注: すなわち、`{}' や `;') は、シェルによって展開されないように、 -どちらも `\e' でエスケープするなり、引用符で囲むなりする必要があるかもしれない。 -アクション \fB\-exec\fP の使用例については「用例」セクションを見ていただきたい。 -指定したコマンドは、マッチした各ファイルに対して一回づつ実行される。 -また、コマンドは \fBfind\fP を実行したディレクトリで実行される。 -そこで、\fB\-exec\fP アクションの使用を巡っては、セキュリティの問題が避けられないわけであり、 -\fB\-exec\fP の代わりに、\fB\-execdir\fP アクションを使用することをお勧めする。 -(訳注: `;' は引き数なので、直前の引き数との間に空白が必要だということに注意していただきたい。) +\fIcommand\fP を実行します。 \fIcommand\fP の返り値が 0 なら、 true を返します。 \fBfind\fP のコマンドラインで、 +これ以降に指定されている引数は、 `;' という引数が現れるまで、 すべてそのコマンドに対する引数とみなされます。 文字列 `{}' は、 +コマンド引数内に現れるすべての箇所で、 対象ファイル名に置き換えられます。 \fBfind\fP の他の実装においては、 引数の中で `{}' +が単独で用いられていないと、 対象ファイル名に置き換えられないものがあります。 文字列 `{}' は、 シェルによって展開されないように、 どちらも +`\e' でエスケープするか、 クォートで囲む必要があります。 アクション \fB\-exec\fP の具体例については、 「例」セクションを参照してください。 +指定されたコマンドは、 一致したファイルごとに一回ずつ実行されます。 そのコマンドは、 \fBfind\fP を実行したディレクトリにおいて実行されます。 +そこで、 \fB\-exec\fP アクションの実行にあたっては、 セキュリティの問題が避けられません。 したがって、 \fB\-exec\fP の代わりに、 +\fB\-execdir\fP アクションを使用してください。 .IP "\-exec \fIcommand\fP {} +" -アクション \fB\-exec\fP のこの変形も、選択したファイルに対して指定したコマンドを実行するが、 -コマンドラインを形成するとき、選択した各ファイル名をコマンドラインの末尾に追加して行くという方法を取る -(訳注: コマンドラインが長くなりすぎるときは、処理するファイル名のリストを適宜分割して、コマンドを複数回実行する)。 -そのため、コマンドを呼び出す回数が、マッチしたファイルの数よりずっと少なくてすむ。 -コマンドラインの形成法は、 \fBxargs\fP のコマンドライン形成法とほぼ同じである。 -`{}' はコマンドライン中の一ヶ所でしか使えない。 -なお、コマンドは \fBfind\fP を実行したディレクトリで実行される。 -\fBfind\fP がエラーに出会うと、このアクションは \fBfind\fP をその場で終了させてしまうことがあり、 -そのため、予定されているコマンドの中に全く実行されないものが生ずるかもしれない。 -\fB\-exec\fP のこの変形は、常に真を返す。 -(訳注: `+' は引き数なので、直前の引き数との間に空白が必要だということに注意していただきたい。) +この形式の \fB\-exec\fP アクションは、 対象ファイルに対して、 指定されたコマンド (\fIcommand\fP) を実行します。 各対象ファイルは、 +コマンドラインの末尾に追加されながら、 コマンドラインが構成されるので、 指定コマンドの呼び出し回数は、 対象ファイル数よりも大幅に少なくて済みます。 +コマンドラインが構成される処理方法は、 \fBxargs\fP の場合とほぼ同じです。 `{}' の記述は、 コマンドライン中に 1 +度しか用いることはできず、 しかも最後に `+' を伴って、 コマンドラインの最終記述としなければなりません。 また、 +シェルによって誤った解釈が行われないように、 (`\e' を使って) エスケープするか、 全体をクォートで囲むことが必要です。 そのコマンドは、 +\fBfind\fP を実行したディレクトリにおいて実行されます。 '+' 形式を使った呼び出しにおいて、 終了ステータスにゼロでない値が返ってきたら、 +\fBfind\fP も、 終了ステータスにゼロ以外を返します。 \fBfind\fP においてエラーが発生すると、 その場ですぐに終了する場合があります。 +その際には、 残りのコマンドがまったく実行されないこともあります。 このため、 \fB\-exec\ \fP\fImy\-command\fP\fB\ ...\ {}\ +\ \-quit\fP では、 \fImy\-command\fP が実際には実行されない場合があります。 なおこの \fB\-exec\fP の形式は、 必ず true +を返します。 .IP "\-execdir \fIcommand\fP ;" .IP "\-execdir \fIcommand\fP {} +" -\fB\-exec\fP と似ているが、指定したコマンドを、マッチしたファイルが存在するサブディレクトリで実行するという点が異なっている。 -そのサブディレクトリは、 \fBfind\fP を実行したディレクトリとは違うのが普通だ。 -これはコマンドを呼び出す方法としてずっと安全である。マッチしたファイルのパスを解決する際に、競合状態が起きるのを避けられるからだ。 -アクション \fB\-exec\fP の場合と同様、 \fB\-execdir\fP の `+' を伴う形式でも、 -マッチした複数のファイルを一度に処理するように、コマンドラインを形成することになるが、 -\fIcommand\fP のどの呼び出しにおいても、処理の対象としてリストされるファイルは、同じサブディレクトリに存在するものだけである。 -このアクションを使用するのなら、環境変数 \fB$PATH\fP が `.' を参照しないようにしなければならない。 -さもないと、悪意を持った攻撃者が、あなたが \fB\-execdir\fP を実行することになるディレクトリに適当な名前のファイルを入れておくことによって、 -何でも好きなコマンドを実行できてしまうからだ。 -\fB$PATH\fP の中に、空っぽのエントリや、絶対パスのディレクトリ名ではないエントリがある場合にも、同じことが言える。 -\fBfind\fP がエラーに出会うと、このアクションは \fBfind\fP をその場で終了させてしまうことがあり、 -そのため、予定されているコマンドの中に全く実行されないものが生ずるかもしれない。 -このアクションが返す値は、\fB+\fP と \fB;\fP のどちらを使うかによって異なっている。 -\fB\-execdir\fP \fIcommand\fP \fB{} +\fP が常に真を返すのに対して、\fB\-execdir\fP \fIcommand\fP \fB{} ;\fP -は、\fIcommand\fP が 0 を返したときのみ、真を返すのである。 +\fB\-exec\fP と同様ですが、 指定したコマンドは、 一致したファイルが存在するサブディレクトリ内で実行されます。 このサブディレクトリは、 普通は +\fBfind\fP を実行したディレクトリとは異なるはずです。 \fB\-exec\fP と同じように、 find をシェルから呼び出す場合には {} +をクォートでくくる必要があります。 この形式は、 コマンドを呼び出す方法として、 非常に安全なものです。 一致したファイルのパスを確定させる際に、 +競合状態を避けることができるためです。 \fB\-exec\fP アクションの場合と同様、 \fB\-execdir\fP の `+' 形式の実行においても、 +一致した複数ファイルを処理するようなコマンドラインが構成されます。 ただし、 指定された \fIcommand\fP の呼び出しは、 どの場合であっても、 +必ず同一サブディレクトリ内にあるファイルだけを対象にして実行されます。 このオプションの利用にあたっては、 環境変数 \fBPATH\fP が、 `.' +を参照していないようにする必要があります。 そうしていないと、 攻撃者が、 \fB\-execdir\fP を実行するディレクトリ内に、 +いかにも正しいファイルを置くだけで、 任意のコマンド実行を許してしまうことになります。 \fBPATH\fP 内のエントリに、 空のものや、 +相対パスのディレクトリ名を含んでいる場合にも、 同じことが言えます。 '+' 形式を使った呼び出しにおいて、 +終了ステータスにゼロでない値が返ってきたら、 \fBfind\fP も、 終了ステータスにゼロ以外を返します。 \fBfind\fP においてエラーが発生すると、 +その場ですぐに終了する場合があります。 その際には、 残りのコマンドがまったく実行されないこともあります。 このアクションが返す値は、 \fB+\fP と +\fB;\fP のどちらの形式を使うかによって異なります。 \fB\-execdir\ \fP\fIcommand\fP\fB\ {}\ +\fP は必ず true +を返しますが、 \fB\-execdir\ \fP\fIcommand\fP\fB\ {}\ ;\fP は、 \fIcommand\fP が 0 を返したときだけ、 true +を返します。 .IP "\-fls \fIfile\fP" -真を返す。\fB\-ls\fP と似ているが、\fB\-fprint\fP 同様、出力を \fIfile\fP に書き出す点が違う。 -出力用のファイルは、この述語の対象になるものが一つもなかった場合でも、必ず作成される。 -ファイル名中の普通使わない文字がどのように扱われるかについては、「変わり者のファイル名」セクションを参照していただきたい。 +true を返します。 \fB\-ls\fP と同様ですが、 \fB\-fprint\fP のように、 \fIfile\fP への出力を行います。 出力ファイルは、 +この述語表現に一致するものがなくても、 必ず生成されます。 ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 +「普通ではないファイル名」のセクションを参照してください。 .IP "\-fprint \fIfile\fP" -真を返す。パス付きのファイル名をファイル \fIfile\fP に出力する。 -\fBfind\fP の実行時に \fIfile\fP が存在しなければ、新たに作成される。 -すでに存在していれば、元の中身が捨てられる。ファイル名 `/dev/stdout' と -`/dev/stderr' の扱いは特別で、それぞれ標準出力と標準エラー出力を指している。 -出力用のファイルは、この述語の対象になるものが一つもなかった場合でも、必ず作成される。 -ファイル名中の普通使わない文字がどのように扱われるかについては、「変わり者のファイル名」セクションを参照していただきたい。 +true を返します。 パス付きのファイル名を、 ファイル \fIfile\fP に出力します。 \fBfind\fP の実行時に、 \fIfile\fP +が存在しなければ、 新たに生成されます。 すでに存在していたら、 元の中身は失われます。 ファイル名 \fI/dev/stdout\fP と +\fI/dev/stderr\fP は特別に扱われます。 それぞれ、 標準出力、 標準エラー出力を意味します。 出力ファイルは、 +この述語表現に一致するものがなくても、 必ず生成されます。 ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 +「普通ではないファイル名」のセクションを参照してください。 .IP "\-fprint0 \fIfile\fP" -真を返す。\fB\-print0\fP と似ているが、\fB\-fprint\fP 同様、出力を \fIfile\fP に書き出す点が違う。 -出力用のファイルは、この述語の対象になるものが一つもなかった場合でも、必ず作成される。 -ファイル名中の普通使わない文字がどのように扱われるかについては、「変わり者のファイル名」セクションを参照していただきたい。 +true を返します。 \fB\-print0\fP と同様ですが、 \fB\-fprint\fP のように、 \fIfile\fP への出力を行います。 出力ファイルは、 +この述語表現に一致するものがなくても、 必ず生成されます。 ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 +「普通ではないファイル名」のセクションを参照してください。 .IP "\-fprintf \fIfile\fP \fIformat\fP" -真を返す。\fB\-printf\fP と似ているが、 \fB\-fprint\fP 同様、出力を \fIfile\fP に書き出す点が違う。 -出力用のファイルは、この述語の対象になるものが一つもなかった場合でも、必ず作成される。 -ファイル名中の普通使わない文字がどのように扱われるかについては、「変わり者のファイル名」セクションを参照していただきたい。 +true を返します。 \fB\-printf\fP と同様ですが、 \fB\-fprint\fP のように、 \fIfile\fP への出力を行います。 出力ファイルは、 +この述語表現に一致するものがなくても、 必ず生成されます。 ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 +「普通ではないファイル名」のセクションを参照してください。 .IP \-ls -真を返す。処理対象のファイルを \fBls \-dils\fP の書式で標準出力にリストする。 -ブロック数は、1 ブロック 1 キロバイトの計算である。 -ただし、環境変数 POSIXLY_CORRECT が設定されている場合は、1 ブロック 512 バイトが使用される。 -ファイル名中の普通使わない文字がどのように扱われるかについては、「変わり者のファイル名」セクションを参照していただきたい。 +true を返します。 対象ファイルを、 \fBls \-dils\fP の書式で標準出力に出力します。 ブロック数は、 1 ブロックに 1\ KB +バイトです。 ただし、 環境変数 \fBPOSIXLY_CORRECT\fP が設定されている場合は、 1 ブロック 512 +バイトが使用されます。 ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 +「普通ではないファイル名」のセクションを参照してください。 .IP "\-ok \fIcommand\fP ;" -\fB\-exec\fP と似ているが、まずユーザに問い合わせを行う。 -ユーザーが同意すれば、コマンドを実行する。同意しなければ、何もせずに偽を返す。 -コマンドを実行する場合、そのコマンドの標準入力は、\fB/dev/null\fP に付け換えられる。 +\fB\-exec\fP と同様ですが、 ユーザーへの問い合わせを行います。 ユーザーが同意すれば、 コマンドを実行します。 同意しなければ、 何もせずに +false を返します。 コマンドが実行される際に、 標準入力はリダイレクトされて、 \fI/dev/null\fP になります。 このオプションは +\fB\-files0\-from\fP オプションとともに指定することはできません。 .IP -プロンプトに対するユーザの応答は、肯定・否定を表す一組の正規表現と照合して、同意か、不同意かが判断される。 -この正規表現は、環境変数 `POSIXLY_CORRECT' が設定されていれば、システムから得られるが、 -設定されていなければ、\fBfind\fP の持つメッセージ翻訳から取得される。 -なお、システムに適切な定義が存在しない場合は、 \fBfind\fP の持つ定義が使用されることになる。 -どちらの場合でも、正規表現そのものの解釈は、環境変数 'LC_CTYPE' (文字クラスについて) や -\&'LC_COLLATE' (文字の範囲や等価クラスについて) の影響を受ける。 +プロンプトに対するユーザーの入力は、 肯定、 否定を表す一組の正規表現との一致確認が行われて、 同意したかどうかが決定します。 この正規表現は、 +環境変数 \fBPOSIXLY_CORRECT\fP が設定されていれば、 システムから取得されます。 環境変数が設定されていなければ、 \fBfind\fP +が持つメッセージ翻訳から取得されます。 システムに適切な定義が存在しなかった場合は、 \fBfind\fP 自体が持つ定義が使用されます。 どの場合でも、 +正規表現そのものの解釈は、 環境変数 \fBLC_CTYPE\fP (文字クラス) や \fBLC_COLLATE\fP (文字の範囲や等価クラス) +の影響を受けます。 .IP "\-okdir \fIcommand\fP ;" -\fB\-execdir\fP と似ているが、\fB\-ok\fP と同じように、まずユーザに問い合わせを行う。 -ユーザが同意しなければ、何もせずに偽を返す。 -コマンドを実行する場合、そのコマンドの標準入力は、\fB/dev/null\fP に付け換えられる。 +\fB\-execdir\fP と同様ですが、 \fB\-ok\fP と同じように、 ユーザーへの問い合わせを行ないます。 ユーザーが同意しなければ、 何もせずに +false を返します。 コマンドが実行される際に、 標準入力はリダイレクトされて、 \fI/dev/null\fP になります。 このオプションは +\fB\-files0\-from\fP オプションとともに指定することはできません。 + .IP \-print -真を返す。パス付きのファイル名を標準出力に表示し、各ファイル名の後ろに改行文字を付ける。 -\fBfind\fP の出力をパイプを使って他のプログラムに渡している場合、 -検索対象のファイル名に改行文字が含まれている可能性が、わずかにでもあるならば、 -\fB\-print\fP ではなく、 \fB\-print0\fP アクションを使用することを真剣に考えるべきだ。 -ファイル名中の普通使わない文字がどのように扱われるかについては、「変わり者のファイル名」セクションを参照していただきたい。 +true を返します。 パス付きのファイル名と、 最後に改行文字をつけて、 標準出力に出力します。 \fBfind\fP の出力を、 +パイプを使って他のプログラムに受け渡している場合、 対象ファイル名に改行文字が含まれている可能性が、 少しでもあるなら、 \fB\-print\fP ではなく、 +\fB\-print0\fP アクションの使用を是非考えてください。 ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 +「普通ではないファイル名」のセクションを参照してください。 .IP \-print0 -真を返す。パス付きのファイル名を標準出力に表示し、各ファイル名の後ろに -(\fB\-print\fP が改行文字を付けるのとは違って) ヌル文字を追加する。 -このアクションを使えば、\fBfind\fP の出力を処理するプログラムが、改行文字などのホワイトスペースを含むファイル名を正しく解釈できるようになる。 -このアクションは、\fBxargs\fP の \fB\-0\fP オプションに呼応している。 +true を返します。 パス付きのファイル名と、 最後にヌル文字をつけて、 標準出力に出力します (\fB\-print\fP +が改行文字をつけるのとは異なります)。 このアクションを使えば、 \fBfind\fP の出力を処理するプログラムが、 +改行文字やホワイトスペースを含むファイル名を、 正しく解釈できるようになります。 このアクションは、 \fBxargs\fP の \fB\-0\fP +オプションに対応します。 .IP "\-printf \fIformat\fP" -真を返す。標準出力に \fIformat\fP を表示する。そのとき \fIformat\fP 中の -`\e' によるエスケープシーケンスと、`%' に始まる書式指定子を認識して変換する。 -フィールドの幅や精度は、C 言語の `printf' 関数と同じ方法で指定できる。 -%d ではなく、%s として (訳注: すなわち、数値ではなく、文字列として) -表示されるフィールドが多いことに注意していただきたい。 -そのため、フラグが期待通りに効かないかもしれないのだ。 -ただし、`\-' フラグ (フィールドを強制的に左揃えにする) -はきちんと働くということでもある。\fB\-print\fP とは違って、 -\fB\-printf\fP は文字列の末尾に改行文字を追加しない。 -バックスラッシュ・エスケープシーケンスと書式指定子は以下のとおりである。 +true を返します。 これは標準出力に \fIformat\fP を出力します。 \fIformat\fP 内の `\e' によるエスケープや、 `%' +に始まるディレクティブを解釈します。 フィールドの幅や精度は、 C 言語の \fBprintf\fP(3) 関数と同じ方法で指定することができます。 +多くのフィールドは、 %d としてではなく、 %s として出力されます。 このため、 フラグが期待通りに動作しないことも発生します。 一方で、 `\-' +フラグ (フィールドを必ず左揃えにする指定) を使えば、 必ず動作します。 \fB\-print\fP とは違って、 \fB\-printf\fP は、 +文字列の末尾に改行文字を追加しません。 エスケープとディレクティブには、 以下のものがあります。 .RS .IP \ea 警告ベル。 .IP \eb バックスペース。 .IP \ec -このフォーマットによる出力をただちに停止し、出力をフラッシュする。 +このフォーマットによる出力をすぐに停止して、 出力をフラッシュします。 .IP \ef -フォームフィード文字。 +フォームフィード。 .IP \en 改行文字。 .IP \er @@ -906,21 +780,20 @@ ASCII NUL 文字。 .IP \eNNN ASCII コードが NNN (8 進数) の文字。 .PP -バックスラッシュ文字 `\e' に上記以外の文字が続く場合、`\e' は普通の文字として扱われる。 -従って、二文字とも表示されることになる。 +バックスラッシュ文字 `\e' に、 上記以外の文字が続いた場合は、 `\e' が普通の文字として扱われます。 つまり、 2 +文字とも表示されることになります。 .IP %% パーセント文字そのもの。 .IP %a -ファイルの最終アクセス日時を C 言語の `ctime' 関数が返す形式で表示する。 +ファイルの最終アクセス時間を、 C 言語の \fBctime\fP(3) 関数が返す形式で表したものです。 .IP %A\fIk\fP -ファイルの最終アクセス日時を \fIk\fP で指定した書式で表示する。\fIk\fP には -`@' か、あるいは C 言語の `strftime' 関数の書式指定子を用いる。 -\fIk\fP に指定可能な値を以下に列挙する。 -一部のものは使えないシステムがあるかもしれないが、それはシステム間での -`strftime' の非互換性による。 +\fIk\fP で指定された書式に基づいて、 ファイルの最終アクセス時間を表したものです。 \fIk\fP に指定するのは、 `@' か、 あるいは C 言語の +\fBstrftime\fP 関数で用いるディレクティブです。 以下に、 \fIk\fP に指定可能な値を示します。 ただし、 すべてを示すものではありません。 +完全な一覧については、 \fBstrftime\fP(3) のドキュメントを参照してください。 指定文字に応じた文字列変換は、 +システムによっては利用できない場合があります。 それは、 ライブラリ関数 \fBstrftime\fP(3) の実装が、 システムよって異なるからです。 .RS .IP @ -Jan. 1, 1970, 00:00 GMT からの経過秒数。小数点以下も表示する。 +Jan. 1, 1970, 00:00 GMT からの経過秒数。 小数点以下も表示します。 .PP 時刻フィールド: .IP H @@ -934,620 +807,683 @@ Jan. 1, 1970, 00:00 GMT からの経過秒数。小数点以下も表示する .IP M 分 (00..59) .IP p -現在のロケールにおける AM/PM の相当語 +現在のロケールにおいて AM/PM に相当する文字列。 .IP r 12 時間制の時刻 (hh:mm:ss [AP]M) .IP S -秒 (00.00 .. 61.00)。小数点以下も表示。 +秒 (00.00 \&..\& 61.00)。 小数点以下も表示します。 .IP T -24 時間制の時刻 (hh:mm:ss) +24 時間制の時刻 (hh:mm:ss.xxxxxxxxxx) .IP + -日付と時刻。両者の間は `2004\-04\-28+22:22:05.0' といった具合に '+' で 区切られる。 -これは GNU の拡張である。日時は現在のタイムゾーンのものが使われる -(それ故、環境変数 TZ の設定によって変わるかもしれない)。秒には小数点以下も付く。 +日付と時刻。 両者の間は `2004\-04\-28+22:22:05.0' といったように '+' で 区切られます。 これは GNU 拡張です。 +時間は、 現在のタイムゾーンによるものが用いられます (したがって、 環境変数 \fBTZ\fP の設定に影響を受ける場合があります)。 秒は、 +小数点以下が含まれます。 .IP X -現在のロケールによる時刻表示 (H:M:S) +現在のロケールによる時刻表示 (H:M:S)。 秒は小数点以下を含みます。 .IP Z -タイムゾーン (JST など)。タイムゾーンを決定できない場合は、何も表示しない。 +タイムゾーン (JST など)。 タイムゾーンが決定できなかった場合は、 何も表示されません。 .PP 日付フィールド: .IP a -現在のロケールによる曜日の短縮形 (Sun..Sat) +現在のロケールによる曜日の短縮形 (Sun..Sat)。 .IP A -現在のロケールによる曜日の省略しない表示。長さは可変 (Sunday..Saturday) +現在のロケールによる、 曜日の省略しない表示。 長さは可変 (Sunday..Saturday)。 .IP b -現在のロケールによる月名の短縮形 (Jan..Dec) +現在のロケールによる月名の短縮形 (Jan..Dec)。 .IP B -現在のロケールによる月名の省略しない表示。長さは可変 (January..December) +現在のロケールによる月名の省略しない表示。 長さは可変 (January..December)。 .IP c -現在のロケールによる日付と時刻の表示 (Sat Nov 04 12:02:33 EST 1989)。 -この表示形式は \fBctime\fP(3) のものと同じであり、\fBctime\fP(3) -の形式との互換性を維持するためにそうなっている。秒には小数点以下が付かない。 +現在のロケールによる日付と時刻の表示 (Sat Nov 04 12:02:33 EST 1989)。 この表示形式は、 \fBctime\fP(3) +のものと同じであり、 \fBctime\fP(3) の形式との互換性を維持するためのものです。 秒は小数点表記されません。 .IP d -その月の何日目かの表示 (01..31) +その月の何日目かの表示 (01..31)。 .IP D -日付 (mm/dd/yy) +日付 (mm/dd/yy)。 +.IP F +日付 (yyyy\-mm\-dd)。 .IP h -b と同じ +b と同じ。 .IP j -その年の何日目かの表示 (001..366) +その年の何日目かの表示 (001..366)。 .IP m -月 (01..12) +月 (01..12)。 .IP U -その年の何週目か (日曜日を週の始まりとする) (00..53) +その年の何週目か (日曜日を週の始まりとする) (00..53)。 .IP w -曜日 (0..6) +曜日 (0..6)。 .IP W -その年の何週目か (月曜日を週の始まりとする) (00..53) +その年の何週目か (月曜日を週の始まりとする) (00..53)。 .IP x -現在のロケールによる日付表示 (mm/dd/yy) +現在のロケールによる日付表示 (mm/dd/yy)。 .IP y -年の下二桁 (00..99) +年の下二桁 (00..99)。 .IP Y -年 (1970...) +年 (1970...\&)。 .RE .IP %b -ファイルのディスクスペース使用量を 1 ブロック 512 バイトのブロック数で表示する。 -ディスクスペースは、ファイルシステムのブロックサイズの倍数で割り当てられるので、この表示はたいてい -%s/512 より大きい。だが、ファイルが穴空きファイル (sparse file) -の場合は、%s/512 より小さくなることもある。 +ファイルが使用するディスク容量を、 1 ブロック 512 バイトのブロック数で表示します。 ディスク領域は、 +ファイルシステムブロックサイズの倍数によって割り当てられるので、 たいていは %s/512 より大きくなります。 ただしスパースファイルの場合は、 +%s/512 より小さくなることがあります。 + +.IP %B\fIk\fP +ファイルの生成時間。 フォーマットは \fIk\fP によって指定します。 これは %A に対するものと同じです。 +処理を行っているオペレーティングシステムやファイルシステムが、 生成時間をサポートしていない場合、 このディレクティブは空文字を返します。 + .IP %c -ファイルの最終ステータス変更日時を C 言語の `ctime' 関数が返す形式で表示する。 +ファイルの最終ステータス変更時間を、 C 言語の \fBctime\fP(3) 関数が返す形式で表したものです。 .IP %C\fIk\fP -ファイルの最終ステータス変更日時を \fIk\fP で指定した書式で表示する。 -\fIk\fP は %A の場合と同じである。 +ファイルの最終ステータス変更時間を、 \fIk\fP で指定した書式で表したものです。 \fIk\fP は %A の場合と同様です。 .IP %d -ファイルがディレクトリツリー中でどの深さにあるかを示す。 -0 だったら、そのファイルが探索開始点だということだ。 +ディレクトリツリー内で、 対象ファイルがどれだけ深い階層数にあるかを示します。 0 は、 対象ファイルが検索開始ポイントにあることを意味します。 .IP %D -ファイルがどのデバイス上にあるかを十進数のデバイス番号で示す -(stat 構造体の st_dev フィールドに当たる)。 +ファイルがどのデバイス上にあるかを、 10 進数のデバイス番号 (stat 構造体の st_dev フィールド) で示します。 .IP %f -先行するディレクトリをすべて取り去ったファイル名 -(すなわち、最後の要素のみ表示)。 +ベース名を表します。 ファイル名から、 先頭にあるディレクトリ名を取り除きます (最後の要素のみを残します)。 \fB/\fP に対する結果は `/' です。 +処理例については「\fB例\fP」セクションを参照してください。 + .IP %F -ファイルが置かれているファイルシステムのタイプ。ここで表示された値は -\-fstype の引き数に指定することができる。 +ファイルがあるファイルシステムのタイプを表します。 ここで表示される値は \-fstype の引数に指定することができます。 .IP %g -ファイルのグループ名。該当するグループ名が存在しない場合は、グループ ID 番号。 +ファイルのグループ名を表します。 グループ名が存在しない場合は、 グループ ID 番号を表します。 .IP %G ファイルのグループ ID 番号。 .IP %h -ファイル名中の先行するディレクトリの部分 (すなわち、最後の要素以外のすべて)。 -ファイル名にスラッシュが一つも含まれない場合は -(それは、カレントディレクトリ中にあるということだから)、%h 書式指定子は -"." に展開される。 +ディレクトリ名を表します。 つまり、 ファイル名の先頭にあるディレクトリ部分 (最後の要素以外のすべて) を表します。 +ファイル名にスラッシュが一つも含まれない場合 (カレントディレクトリ内にあることになるので)、 書式指定子 %h は `.' +に展開されます。対象ファイルがディレクトリそのものであって、 スラッシュ \fB/\fP を含む場合、 %h は空文字に展開されます。 +具体例は「\fB例\fP」セクションを参照してください。 .IP %H -探索開始点のうち、その下に問題のファイルが見つかったもの。 +検索開始ポイントのうち、 対象ファイルが見つかったものを表します。 .IP %i -ファイルの inode 番号 (十進数表示)。 +ファイルの i ノード番号 (10 進数表示)。 .IP %k -ファイルのディスクスペース使用量を 1 ブロック 1 キロバイトのブロック数で表示する。 -ディスクスペースは、ファイルシステムのブロックサイズの倍数で割り当てられるので、この表示はたいてい %s/1024 より大きい。 -だが、ファイルが穴空きファイル (sparse file) の場合は、%s/1024 より小さくなることもある。 +ファイルが利用するディスク容量を、 1 ブロック 1 KB のブロック数で表示します。 ディスク領域は、 +ファイルシステムのブロックサイズの倍数によって割り当てられるので、 たいていは %s/1024 より大きくなります。 スパースファイルの場合は、 +%s/1024 より小さくなることがあります。 .IP %l -シンボリックリンクの参照先 (ファイルがシンボリックリンクでなかったら、空文字列)。 +シンボリックリンク先 (シンボリックリンクでない場合は、 空文字列) を表します。 .IP %m -ファイルの許可属性ビット (8 進数表示)。このオプションが使用している数値は、 -Unix のたいていの実装が使用している「伝統的な」数値である。 -しかし、ご使用のシステムの実装では、8 進数で表示する許可属性ビットの並び方が独特かもしれない。 -その場合は、ファイルの許可属性の実際の値と %m の出力とが、相違することになる。 -この数値の先頭に 0 を付けて表示したいこともよくあるが、 -そのためには、\fB#\fP フラグを使用すればよい (たとえば、`%#m' といった具合に)。 +ファイルの許可属性ビット (8 進数表示) を表します。 このオプションが使用している数値は、 たいていの Unix +実装において用いられる「従来の」数値です。 しかし利用中のシステム実装においては、 8 進数で表示する許可属性ビットの並び方が、 +普通とは異なるかもしれません。 その場合は、 ファイルの許可属性の実際の値と、 %m の出力とが異なることになります。 数値の先頭に 0 +をつけて表示したい場合があります。 そのときは、 \fB#\fP フラグを使って、 たとえば `%#m' のようにします。 .IP %M -ファイルの許可属性 (\fBls\fP と同様のシンボルによる表現)。この書式指定子は findutils 4.2.5 以来 サポートされている。 +ファイルの許可属性を表します (\fBls\fP と同様のシンボルによる表現)。 このディレクティブは、 findutils 4.2.5 +以降にサポートされるようになりました。 .IP %n ファイルのハードリンク数。 .IP %p ファイル名。 .IP %P -問題のファイルが、ある探索開始点の下にあった場合に、 -ファイル名から探索開始点を示す部分を取り去ったもの。 +検索開始ポイント名を使って表現した、 対象ファイル名であって、 現在削除されたものを表します。 .IP %s -バイトで表示したファイルサイズ。 +バイト単位によるファイルサイズ。 .IP %S -ファイルの穴空き率 (sparseness)。この値は、(BLOCKSIZE*st_blocks / st_size) -で計算される。ある大きさの普通のファイルから得られる値は、厳密に言うと、システム依存である。 -それでも、穴空きファイルの穴空き率は、通常 1.0 未満になるし、 -間接ブロックを使用しているファイルの穴空き率は、1.0 以上になることがある。 -BLOCKSIZE に使われる値は、システム次第だが、普通は 512 バイトである。 -ファイルサイズが 0 の場合、出力される値は不定である。 -st_blocks をサポートしていないシステムでは、ファイルの穴空き率は、1.0 と見なされる。 +ファイルが「まばら」である度合い (sparseness) を表します。 この値は (BLOCKSIZE*st_blocks / st_size) +として計算されます。 ある程度の大きさを持つ普通のファイルの場合、 その正確な値は、 システムによってさまざまです。 スパースファイルであれば、 +「まばら」な度合いは、 普通は 1.0 未満です。 一方で、 間接ブロックを使用しているファイルの場合は、 1.0 以上になることがあります。 +BLOCKSIZE に設定される値は、 システムに依存しますが、 通常は 512 バイトです。 ファイルサイズが 0 の場合、 +この値は未定義として出力されます。 st_blocks をサポートしていないシステムでは、 ファイルの「まばら」な度合いは、 1.0 とみなされます。 .IP %t -ファイルの最終内容更新日時を、C 言語の `ctime' 関数が返す形式で表示する。 +ファイルの最終更新時間を、 C 言語の \fBctime\fP(3) 関数が返す形式で表したものです。 .IP %T\fIk\fP -ファイルの最終内容更新日時を \fIk\fP で指定した書式で表示する。 -\fIk\fP は %A の場合と同じである。 +\fIk\fP で指定された書式に基づいて、 ファイルの最終更新時間を表したものです。 \fIk\fP は %A の場合と同様です。 .IP %u -ファイルの所有者名。該当するユーザ名が存在しない場合は、ユーザ ID 番号。 +ファイルを所有するユーザー名。 ユーザーに名前がない場合は、 ユーザー ID 番号が用いられます。 .IP %U -ファイルのユーザ ID 番号。 +ファイルを所有するユーザーの ID 番号。 .IP %y -ファイルのタイプ (\fBls \-l\fP の表現とほぼ同じ)。U=unknown type -(これが表示されることはないはずだ) +ファイルタイプ (\fBls \-l\fP の表現と同様です)。 U はタイプ不明 (unknown type) を表します (発生することはありません)。 .IP %Y -ファイルのタイプ (表示は %y と同じ)。ただし、シンボリックリンクをたどる。 -その場合、L=loop, N=nonexistent である。 +ファイルタイプ (%y と同様)。 さらに、 シンボリックリンクをたどります。 `L' はループ、 `N' は非存在、 `?' はその他のエラーであり、 +シンボリックリンク先のタイプが決定できなかった場合です。 .IP %Z -(SELinux が有効なときのみ) ファイルのセキュリティ・コンテクスト。 +(SELinux 有効時のみ) ファイルのセキュリティコンテキスト。 .IP "%{ %[ %(" -将来の使用のために予約されている。 +将来の利用のために予約されています。 .PP -一個の `%' に上記以外の文字が続く場合、`%' 文字は捨てられるが、それに続く文字は表示される -(書式指定文字が新たに追加されるかもしれないので、この動作を当てにしてはいけない。 -(訳注: 以前はそのとおりだったが、現在では、無効な書式指定子を使った場合、`%q' -のように `%' も表示されるようだ))。 -書式指定の末尾に `%' があるときの動作は、続く文字がないので不定である。 -ロケールによっては、お宅のドアの鍵が見つからなくなるかもしれない。 -また、別のロケールでは、お読みになっている小説の最後のページが消えてしまうかもしれない。 - -書式指定子 %m と %d はフラグ \fB#\fP, \fB0\fP, \fB+\fP をサポートするが、 -それ以外の書式指定子では、数値を表示する場合でも、そうしたフラグをサポートしない。 -\fB#\fP などをサポートしない数値関係の書式指定子には、\fBG\fP, \fBU\fP, \fBb\fP, \fBD\fP, -\fBk\fP, \fBn\fP などがある。しかし、書式フラグ `\-' はサポートされており、フィールドを -(デフォルトの) 右揃えから左揃えに変更する。 +1 つの `%' に対して、 上記以外の文字が続く場合、 `%' 文字は無視されて、 それに続いた文字が表示されます +(新たに指定文字が定義されるかもしれないため、 この動作に期待するのは避けてください)。 書式指定の文字列の最後に `%' だけが 1 つあると、 +次に文字がないため、 その動作は不定となります。 何が起きるか分かりませんから、 ロケールによっては、 ドアの鍵を紛失するかもしれませんし、 +せっかく読んでいる小説の最後のページが、 なくなってしまうかもしれません。 + +ディレクティブ %m と %d は、 書式フラグ \fB#\fP, \fB0\fP, \fB+\fP をサポートします。 これ以外のディレクティブは、 +数値を表す場合であっても、 このフラグをサポートしません。 このフラグをサポートしない数値関連のディレクティブには、 \fBG\fP, \fBU\fP, \fBb\fP, +\fBD\fP, \fBk\fP, \fBn\fP があります。 書式フラグとして `\-' もサポートされています。これを使えば、 欄出力の右揃え (デフォルト) +を左揃えに変更することができます。 .PP -ファイル名中の普通使わない文字がどのように扱われるかについては、 -「変わり者のファイル名」セクションの説明を参照していただきたい。 +ファイル名に、 普通は使わない文字が含まれている場合の扱いについては、 「普通ではないファイル名」のセクションを参照してください。 .RE .IP \-prune -真を返す。処理対象のファイルがディレクトリの場合は、そのディレクトリ以下に降りて行かない。 -\fB\-depth\fP が指定してあると、\fB\-prune\fP は、 -偽を返し、その効果を失う。\fB\-delete\fP を指定すると自動的に \fB\-depth\fP -が有効になるので、\fB\-prune\fP を \fB\-delete\fP と一緒に使っても役に立たない。 +true を返します。 処理対象がディレクトリである場合、 ディレクトリ内に入っていきません。 \fB\-depth\fP が指定してあると、 +\fB\-prune\fP は何もしません。 \fB\-delete\fP の指定には、 暗に \fB\-depth\fP の指定が含まれているので、 \fB\-prune\fP と +\fB\-delete\fP を同時に使うことはできません。 たとえば、 \fIsrc/emacs\fP +というディレクトリとその下にあるファイルやディレクトリはスキップするとします。 そしてそれ以外のファイルを表示しようとする場合には、 +以下のように実行します。 +.in +4m +.nf +find . \-path ./src/emacs \-prune \-o \-print +.fi +.in + -.RS -.IP "[\fB訳注\fP]:" 8 -つまり、\fB\-prune\fR は指定されたディレクトリの、いわゆる枝刈り -(prune) をする。バージョン 4.3.11 以降の \fBfind\fR では、\fB\-prune\fR -の動作が、上の説明と少し違っている。\fB\-depth\fR -が指定してあると、\fB\-prune\fR が効果を失う (すなわち、枝刈りを行わなくなる) -ことは、それ以前と変わりがないが、\fI返り値は真を返すようになっているのだ\fR。 -これは POSIX 準拠の動作である。ご自分で、 -.B find . \-depth \-path \(dq./foo\(dq \-prune \-print -などを実行して、確認していただきたい。\fB\-prune\fR -が真を返していれば、ディレクトリ \fB./foo\fR が表示されるはずである。 -.RE .IP \-quit -直ちに終了する。動いている子プロセスを残したまま終了したりはしないが、コマンドラインで指定したパスをこれ以上処理することはない。 -たとえば、 \fBfind /tmp/foo /tmp/bar \-print \-quit\fP は、\fB/tmp/foo\fP を表示するだけである。 -\fB\-execdir \&...\& {} +\fP によってすでに作成されたコマンドラインがあれば、 -\fBfind\fP が終了する前に、呼び出して実行する。 -終了ステータスは、 エラーがすでに起きているかどうかよって、0 のことも、0 でないこともある。 +すぐに終了します (エラーが発生していなければ 0 を返します)。 これは \fB\-prune\fP とは異なります。 \fB\-prune\fP は、 +適用されたディレクトリの内容を、 対象外とするものですが、 \fB\-quit\fP は単純に \fBfind\fP をその場で止めます。 +子プロセスが残ることはありません。 コマンドラインが、 \fB\-exec\ ...\ +\fP や \fB\-execdir\ ...\ +\fP +の形式で構成されていた場合、 そのコマンドはすべて呼び出されてから、 プログラムが終了します。 \fB\-quit\fP が実行されると、 +コマンドライン上に指定されていた残りのファイルは、 処理されません。 たとえば `\fBfind\ \fP\fI/tmp/foo\fP\fB\ \fP +\fI/tmp/bar\fP\fB\ \-print\ \-quit\fP` では、 `/tmp/foo` だけが表示されます。 +.br +\fB\-quit\fP を利用するごく普通のケースとして、 ファイルシステム内から検索したいものが見つかったら、 検索をやめるという使い方があります。 +たとえば、 1 つのファイルだけを見つけたい場合には、 以下のようにすることができます。 +.in +4m +.nf +find / \-name needle \-print \-quit +.fi +.in -.SS 演算子 -.P -演算子を優先順位の高いものから順に列挙する。 +.SS オペレーター +以下ではオペレーターを、 優先順位の高いものから順に示します。 .IP "( \fIexpr\fP )" -カッコの内側を先に処理する。カッコはシェルにとって特別な意味を持っているので、普通はクォートする必要があるだろう。 -このマニュアルページで挙げている例の多くでは、そのためにバックスラッシュを使っている。 -すなわち `(...)' ではなく、`\e(...\e)' と書いている。 +カッコ内を優先的に処理します。 シェルにとって、 カッコには特別な意味があるため、 普通はクォートでくくる必要があります。 +このマニュアルページであげている例では、 この目的でバックスラッシュを多用しています。 つまり `(...)' は、 `\e(...\e)' +のように記述しています。 .IP "! \fIexpr\fP" -\fIexpr\fP が偽の場合、真になる。 -通常、この記号もシェルによって解釈されないようにする必要があるだろう。 +\fIexpr\fP が false の場合に true となります。 通常この記号も、 シェルによって解釈されないようにする必要があります。 .IP "\-not \fIexpr\fP" -! \fIexpr\fP と同じだが、POSIX 準拠の表現ではない。 +!\& \fIexpr\fP と同様ですが、 POSIX には準拠していません。 .IP "\fIexpr1 expr2\fP" -連続する二つの式は、and 結合と解釈される (明示されていないが、式の間に -"\-a" があると見なされるわけだ)。\fIexpr1\fP が偽の場合、\fIexpr2\fP は評価されない。 +2 つ並んだ式は、 暗に \fB\-a\fP によって結合されたものとして扱われます。 そして \fIexpr1\fP が false の場合、 \fIexpr2\fP +は評価されません。 .IP "\fIexpr1\fP \-a \fIexpr2\fP" -\fIexpr1 expr2\fP と同じ。 +\fIexpr1 expr2\fP と同じです。 .IP "\fIexpr1\fP \-and \fIexpr2\fP" -\fIexpr1 expr2\fP と同じだが、POSIX 準拠の表現ではない。 +\fIexpr1 expr2\fP と同様ですが、 POSIX には準拠していません。 .IP "\fIexpr1\fP \-o \fIexpr2\fP" -or 結合である。\fIexpr1\fP が真ならば、\fIexpr2\fP は評価されない。 +OR 結合です。 \fIexpr1\fP が true のとき、 \fIexpr2\fP は評価されません。 .IP "\fIexpr1\fP \-or \fIexpr2\fP" -\fIexpr1\fP \fB\-o\fP \fIexpr2\fP と同じだが、POSIX 準拠の表現ではない。 +\fIexpr1\fP \fB\-o\fP \fIexpr2\fP と同様ですが、 POSIX には準拠していません。 .IP "\fIexpr1\fP , \fIexpr2\fP" -リストである。常に \fIexpr1\fP と \fIexpr2\fP の両方が評価される。 -\fIexpr1\fP の値は捨てられ、\fIexpr2\fP の値がリスト全体の値になる。 -コンマ演算子はいくつかの異なったタイプの対象を捜すとき便利だが、ファイルシステム階層の探索は一度しか行われない。 -異なった形でマッチした対象の一覧をそれぞれ別の出力ファイルに書き出すには、\fB\-fprintf\fP アクションを利用すればよい。 - - -.IP "[\fB訳注\fR]:" 8 -.B find -にとって演算子も引き数である。だから `(', `)', `!', `,' といった演算子も、 -前後の引き数との間に空白が必要だということに気をつけていただきたい。 -.SH 変わり者のファイル名 -多くの場合 \fBfind\fP のアクションは、他のユーザが自由にできるデータを端末に表示することになる。 -そうしたデータには、 たとえば、ファイルの名前、サイズ、内容更新日時などがある。 -この内、ファイル名は `\e0' と `/' 以外のどんな文字でも使えることになっているので、時として問題の種となる。 -ファイル名の中に普通は使わない文字があると、使用している端末に思いがけない、そしてしばしば望ましくない影響をもたらすことがあるのだ (たとえば、 -端末によっては、ファンクション・キーの現在の設定が変更されてしまう)。 -普通使わない文字をどう扱うかはアクションによって異なっている。それを以下に示そう。 +リストを表します。 必ず \fIexpr1\fP と \fIexpr2\fP の両方が評価されます。 \fIexpr1\fP の値は無視されて、 \fIexpr2\fP +の値が、 リストとしての値になります。 このカンマオペレーターは、 さまざまな種類のものを探すときに便利です。 ただしファイルシステム内の検索は、 +一度しか行われません。 さまざまなものに一致した結果を、 複数ファイルに出力するには、 \fB\-fprintf\fP アクションを利用します。 +.P +暗に \fB\-a\fP の指定を意図した場合 (たとえばテストとテストの間に、 このオペレーターを記述しなかった場合)、 あるいは明示的に指定した場合は、 +\fB\-o\fP よりも優先順位が高いことを覚えておいてください。 たとえば、 \fBfind . \-name afile \-o \-name bfile +\-print\fP とした場合、 \fIafile\fP が出力されることはない、 ということです。 +. +.SH 普通ではないファイル名 +\fBfind\fP のアクションの多くでは、 他ユーザーが、 出力されるデータを自由に制御できます。 データには、 ファイル名、 サイズ、 更新時間など、 +さまざまなものがあります。 ファイル名は、 `\e0' と `/' 以外の文字であれば、 何でも含めることができるため、 潜在的な問題を抱えています。 +ファイル名の中に、 普段用いない文字が含まれていると、 端末に対して、 予期しない動作や、 時には望ましくない事態を引き起こすことも可能です。 +(たとえば端末次第では、 ファンクションキーの設定変更が行われてしまうかもしれません)。 普段使わない文字を、 どのように処理するかについては、 +アクションごとに動作が異なります。 以下にこのことを示します。 .IP "\-print0, \-fprint0" -常にファイル名に手を加えず、そのまま出力する。出力先が端末であっても、同じである。 +常にファイル名を修正せずに、 そのまま出力します。 出力先が端末であっても同じです。 .IP "\-ls, \-fls" -普通使わない文字は、常にエスケープされる。ホワイトスペース -(空白、改行、タブなど)、バックスラッシュ、ダブルクォートは C 言語式のエスケープ表現で出力される -(たとえば `\ef', `\e"')。他の普通使わない文字には、エスケープした 8 進数が使われる。 -それ以外の表示可能な文字は (\fB\-ls\fP や \fB\-fls\fP とっては 8 進数の -041 から 0176 に当たる文字)、手を加えずにそのまま出力される。 +普段使わない文字は、 必ずエスケープされます。 ホワイトスペース、 バックスラッシュ、 ダブルクォートは、 C +言語のようなエスケープ表現で出力されます (`\ef', `\e"' など)。 その他の文字では、 8 進数表記によってエスケープして出力されます。 +通常の表示可能な文字 (\fB\-ls\fP や \fB\-fls\fP においては、 8 進数の 041 から 0176 に相当する文字) は、 +そのまま出力されます。 .IP "\-printf, \-fprintf" -出力先が端末でない場合は、そのまま出力される。端末の場合は、使用される書式指定子によって、結果は様々である。 -書式指定子 %D, %F, %g, %G, %H, %Y, %y が展開される値は、ファイルの所有者の管轄外なので、そのまま出力される。 -書式指定子 %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u, %U -の値は、ファイル所有者の管轄内ではあるが、それを使って端末に勝手なデータを送ることはできない。 -従って、そのまま出力される。書式指定子 %f, %h, %l, %p, %P はクォートされる。 -このクォート方法は、GNU \fBls\fP と同じである (訳注: 厳密に言うと、現在のところ -\fBls \-N\fP と同じ。\fBls\fP はバージョンによっては、デフォルトの表示が \fB\-N\fP -ではないことがある)。つまり、\fB\-ls\fP や \fB\-fls\fP -におけるクォート方法とは違うということだ。もし、\fBfind\fP -の出力に使用する形式を自由に決めることができるならば、たいていの場合、 -終端文字に改行ではなく、`\e0' を使用した方がよい。 -ファイル名には空白や改行が含まれていることがあるからだ。 -どの文字にクォートが必要かを判断するには、環境変数 `LC_CTYPE' の設定が使用される。 +出力先が端末でない場合は、 そのまま出力されます。 出力先が端末の場合は、 利用するディレクティブによって、 出力は変わります。 ディレクティブ %D, +%F, %g, %G, %H, %Y, %y が展開される値は、 ファイル所有者が制御するものではないため、 そのまま出力されます。 ディレクティブ +%a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u, %U の値は、 ファイル所有者が制御可能なものですが、 +だからと言って、 端末に任意にデータ送信してよいものではありません。 したがってこのときのデータも、 そのまま出力されます。 ディレクティブ %f, +%h, %l, %p, %P の出力値は、 クォートでくくられます。 クォートでくくるこの方法は、 GNU \fBls\fP の場合と同じです。 逆に +\fB\-ls\fP や \fB\-fls\fP における方法とは異なります。 \fBfind\fP の出力書式を自由に定めてよい、 ということになれば、 普通は、 +終端文字として改行ではなく、 `\e0' を用いるように変更するのが適切です。 これを行うのは、 ファイル名に、 +空白や改行が含まれる場合があるためです。 どの文字をクォートでくくるかは、 環境変数 \fBLC_CTYPE\fP の設定を用いて決定されます。 .IP "\-print, \-fprint" -クォートは \fB\-printf\fP や \fB\-fprintf\fP と同じやり方で行われる。 -\fBfind\fP をスクリプト中で使っている場合や、マッチするファイルが我儘なファイル名を持っているかもしれない場合は、\fB\-print\fP ではなく、 -\fB\-print0\fP の使用を考えた方がよいだろう。 +クォートでくくる方法は、 \fB\-printf\fP や \fB\-fprintf\fP と同じです。 \fBfind\fP をスクリプト内で利用する場合や、 +一致したファイルにあらゆる文字が含まれる可能性がある場合には、 \fB\-print\fP を用いるのではなく、 \fB\-print0\fP +を用いるようにしてください。 .P -アクション \fB\-ok\fP と \fB\-okdir\fP は、対象となるファイル名をそのまま手を加えずに出力する。 -この動作は、将来のリリースで変わるかもしれない。 - +アクション \fB\-ok\fP と \fB\-okdir\fP は、 対象ファイル名をそのまま出力します。 この動作は、 将来のリリースで変わるかもしれません。 +. .SH 規格への準拠 -POSIX 規格にできるだけ準拠した動作を求めるのなら、環境変数 POSIXLY_CORRECT -を設定するとよい。以下のオプションや述語は POSIX 規格 -(IEEE Std 1003.1, 2003 Edition) で規定されている。 +POSIX 規格にできるだけ準拠した動作が必要であれば、 環境変数 \fBPOSIXLY_CORRECT\fP を設定してください。 以下のオプションは、 +POSIX 規格 (IEEE Std 1003.1\-2008, 2016 Edition) の中で規定されています。 .IP \fB\-H\fP -このオプションはサポートしている。 +このオプションはサポートされています。 .IP \fB\-L\fP -このオプションはサポートしている。 +このオプションはサポートされています。 .IP \fB\-name\fP -この述語はサポートしている。しかし、POSIX への準拠度は、システムの -\fBfnmatch\fP(3) ライブラリ関数がどの程度 POSIX に準拠しているかに依存している。 -findutils\-4.2.2 以来、シェルのメタ文字 (`*', `?', `[]' など) は、 -ファイル名の先頭の `.' 文字にマッチするが、これは IEEE PASC interpretation 126 -がそう要求しているからである。この動作は それ以前のバージョンの findutils と異なっている。 +このオプションはサポートされていますが、 POSIX への適応は、 システムの \fBfnmatch\fP(3) ライブラリ関数が、 どれだけ POSIX +に準拠しているかによって、 変わります。 findutils\-4.2.2 以降、 シェルのメタ文字 (たとえば `*', `?', `[]') は、 +ファイル名先頭の `.' 文字に一致するようになりました。 これは IEEE PASC interpretation 126 の要求に従ったものです。 +これは、 それ以前の findutils のバージョンから、 変更されている点です。 .IP \fB\-type\fP -サポートしている。POSIX では `b', `c', `d', `l', `p', `f', `s' -を規定している。GNU find は、そのほか「ドア」を表す `D' もサポートしているが、 -使えるのは OS がそうしたファイル・タイプを用意している場合のみである。 +サポートされています。 POSIX では `b', `c', `d', `l', `p', `f', `s' を規定しています。 GNU find は、 +この他にドア (door) を表す `D' もサポートしています。 これが使えるのは、 OS がこの機能を提供している場合です。 さらに、 GNU +find では、 複数の型指定を一度に行うことが可能であり、 その場合には、 カンマで区切ったリストを指定します。 .IP \fB\-ok\fP -サポートしている。プロンプトに対する応答は、"yes"、"no" -を表すパターンに照らして解釈されるが、そのパターンは、環境変数 -`LC_MESSAGES' を設定することによって選択される。環境変数 -`POSIXLY_CORRECT' が設定されている場合は、何が肯定的応答 (yes) -で、何が否定的応答 (no) かを決めているシステムの定義が、このパターンとして使用される。 -\fBnl_langinfo\fP(3) に関するシステムの文書、特に YESEXPR と NOEXPR -の部分を参照してほしい。それに対し、`POSIXLY_CORRECT' が設定されていない場合は、 -パターンは、システムではなく、\fBfind\fP の持つメッセージ・カタログから取得されるのである。 +サポートされています。 プロンプトに対する入力は、 `yes'、 `no' を表すパターンに従って解釈されます。 そのパターンは、 環境変数 +\fBLC_MESSAGES\fP の設定内容により決定します。 環境変数 \fBPOSIXLY_CORRECT\fP が設定されている場合は、 そのパターンが、 +`yes'、 `no' の入力に対するシステム定義として扱われます。 \fBnl_langinfo\fP(3) に関するドキュメント、 特に YESEXPR +と NOEXPR について参照してください。 \fBPOSIXLY_CORRECT\fP が設定されていない場合、 そのパターンは、 \fBfind\fP +が持っているメッセージカタログから取得されます。 .IP \fB\-newer\fP -サポートしている。指定されたファイルがシンボリックリンクの場合は、必ずリンク先が参照される -(訳注: 訳者としては、「\fB\-L\fP や \fB\-H\fP オプションが有効な場合は」という条件が必要ではないかと思う。 -\fB\-P\fP, \fB\-L\fP, \fB\-H\fP オプションや、検査 \fB\-newer\fP の説明を参照)。 -以前のバージョンでは、シンボリックリンクそのものから比較に使う日時を取得していたが、 -動作がこのように変更になった。後述の「履歴」セクションも参照してほしい。 +サポートされています。 指定されたファイルがシンボリックリンクの場合は、 必ずリンク先が参照されます。 これは以前のバージョンから変更されたものであり、 +以前は、 比較に用いる時間をシンボリックリンクから取得していました。 「履歴」セクションを参照してください。 .IP \fB\-perm\fP -サポートしている。環境変数 POSIXLY_CORRECT が設定されていない場合は、POSIX -では無効な (たとえば、+a+x といった) モード指定の引き数も、後方互換のために使用できるようになっている -(訳注: \fBfind\fP 4.6.0 では、POSIXLY_CORRECT が設定されていないときでも、+a+x のような -\fB\-perm\fP +\fImode\fP の形式は使えなくなっている)。 +サポートされています。 環境変数 \fBPOSIXLY_CORRECT\fP が設定されていない場合には、 POSIX では認められていない (たとえば、 ++a+x のような) モード引数であっても、 後方互換のために利用できるものがあります。 -.IP その他の述語 -\fB\-atime\fP, \fB\-ctime\fP, \fB\-depth\fP, \fB\-group\fP, \fB\-links\fP, \fB\-mtime\fP, -\fB\-nogroup\fP, \fB\-nouser\fP, \fB\-perm\fP, \fB\-print\fP, \fB\-prune\fP, \fB\-size\fP, -\fB\-user\fP \fB\-xdev\fP といった述語は、すべてサポートしている。 +.IP その他のプライマリ +式を構成するプライマリ (primary) として、 \fB\-atime\fP, \fB\-ctime\fP, \fB\-depth\fP, \fB\-group\fP, +\fB\-links\fP, \fB\-mtime\fP, \fB\-nogroup\fP, \fB\-nouser\fP, \fB\-perm\fP, \fB\-print\fP, +\fB\-prune\fP, \fB\-size\fP, \fB\-user\fP \fB\-xdev\fP が、 すべてサポートされています。 .P -POSIX 規格は、カッコ `(', `)'、否定 `!'、それに and と or 演算子 -(\fB\-a\fP, \fB\-o\fP) を規定している。 +POSIX 規格は、 カッコ `(', `)'、 否定 `!'、 論理 AND/OR のオペレーター \fB\-a\fP, \fB\-o\fP を規定しています。 .P -上記以外のすべてのオプション、述語、式などは、POSIX 規格にない拡張である。 -とは言え、そうした拡張の多くは、GNU find に特有なものではない。 +上記を除いたオプション、 述語、 式などは、 すべて POSIX 規格にはない拡張です。 ただしその拡張の多くは、 GNU find +に特有なものではありません。 .P -POSIX 規格によれば、 \fBfind\fP はループを検出することになっている。 +POSIX 規格における \fBfind\fP は、 ループの検出ができなければならないと定めています。 .IP -\fBfind\fP ユーティリティは無限ループを検出しなければならない。 -無限ループとは、探索中に入ったディレクトリが、すでに訪れたことがあり、しかも直前に処理対象にしたファイルの上位にあるディレクトリであることである。 -無限ループを検出した場合、find -は何が起きたかを告げる診断メッセージを標準エラーに表示し、探索位置をディレクトリ階層上の元の位置に戻すか、終了すべきである。 +\fBfind\fP ユーティリティは、 無限ループを検出できなければなりません。 無限ループとは、 処理対象となったファイルの上位ディレクトリが、 +以前に処理していたものであって、 そのディレクトリに入ることです。 無限ループを検出した場合、 find は、 +診断メッセージを標準エラー出力に書き出すものとします。 そして、 ディレクトリ階層上での検索位置を復旧するか、 あるいは終了するものとします。 .P -GNU \fBfind\fP はそうした要求に従っている。 -ディレクトリがその中に上位ディレクトリへのハードリンクであるエントリを含んでいる場合は、 -ディレクトリのハードリンク数が、そのエントリが普通のサブディレクトリならそうなるはずの数よりも、たいてい少なくなるものだ -(訳注: 実際には、Linux を始め、ディレクトリのハードリンクを禁止しているシステムが多い)。その結果、 -GNU find が時として、実際には上位ディレクトリへのハードリンクであるサブディレクトリを、最適化の副作用で探索しないことが起こりえる。その場合、 -\fBfind\fP は確かにそうしたディレクトリに足を踏み入れないわけだから、「ループ検出」の診断メッセージを出さないでもよいことになっている。 -これはかなり紛らわしい動作かもしれないが、\fBfind\fP のこの動作を本気で当てにしている人もいないことだろう。 -\fB\-noleaf\fP オプションを指定して、ディレクトリ・ツリー上の葉っぱを簡易判別する最適化を無効にしている場合は -(訳注: \fB\-noleaf\fP 参照)、こうしたディレクトリ・エントリに対する検査も省略されずに行われ、 -必要ならば、診断メッセージが表示されることになる。シンボリックリンクを使っていれば、 -ファイルシステム上に本物の循環を起こすことはないが、それでも、\fB\-L\fP や \fB\-follow\fP -を使用している場合は、探索中にシンボリックリンクのループに出会えば、診断メッセージが表示される。 -ハードリンクを含むループの場合と同様、葉っぱを簡易判別する最適化を使用していると、 -\fBfind\fP はたいていの場合、シンボリックリンクに対して \fIstat()\fP や \fIchdir()\fP -を呼び出すまでもないと知っていることになるので、ループの診断は不要になることが多い。 +GNU \fBfind\fP は、 この要件を満たしています。 上位ディレクトリへのハードリンクを含んだディレクトリと、 +そういったものを含まないディレクトリを比較してみると、 ディレクトリのリンク数は、 前者の方が少なくなることがよくあります。 このことがあるため、 +上位ディレクトリへのリンクであるサブディレクトリに対して、 GNU find は、 最適化によって、 そのディレクトリを調べないケースが発生します。 +\fBfind\fP は実際に、 そういったサブディレクトリに入っていかないため、 診断メッセージの出力を抑えることができます。 +わかりにくい処理かもしれませんが、 実際にこの動作に期待する人は、 まずいません。 \fB\-noleaf\fP オプションの指定によって、 葉 (leaf) +に関する最適化処理が無効になっていた場合、 ディレクトリの各エントリは、 必ず調べられます。 したがって診断メッセージは、 必要な場面で表示されます。 +シンボリックリンクを使っていれば、 ファイルシステム上にこのようなリンクを作り出すことはできません。 ただし \fB\-L\fP オプションや +\fB\-follow\fP オプションを指定しているときには、 シンボリックリンクのループが見つかると、 診断メッセージが表示されます。 +ハードリンクを含むループの場合と同様に、 葉に関する最適化によって、 \fBfind\fP がシンボリックリンクに対して、 \fIstat()\fP や +\fIchdir()\fP を用いる必要がないと判断することがあるため、 診断情報は、 かなりの頻度で必要なくなります。 .P -\fB\-d\fP オプションは BSD システム各種との互換性のためにサポートされている。 -だが、POSIX に準拠している \fB\-depth\fP オプションの方を使った方がよい。 +\fB\-d\fP オプションは、 各種の BSD システムとの互換性のためにサポートされています。 したがって、 これを使うのではなく、 POSIX +に準拠する \fB\-depth\fP オプションを用いてください。 .P -環境変数 POSIXLY_CORRECT は、検査 \fB\-regex\fP や \fB\-iregex\fP の動作に影響を与えない。 -そうした検査は、POSIX 規格で規定されていないからである。 +環境変数 \fBPOSIXLY_CORRECT\fP は、 テスト \fB\-regex\fP や \fB\-iregex\fP の動作に影響を与えません。 +こういったテストは、 POSIX では規定されていないためです。 +. .SH 環境変数 .IP LANG -国際化関係の環境変数のうち、値が設定されていなかったり、null -だったりする変数に対して、LANG の値がデフォルトの値になる。 +国際化関連の環境変数において、 値が設定されていない、 あるいは null であるものに対して、 デフォルト値を提供します。 .IP LC_ALL -この環境変数が空文字列以外の値に設定されていると、その値が国際化関係の他のすべての環境変数の値よりも優先される。 +この環境変数に、 空文字列ではない値が設定されていれば、 国際化関連の環境変数を上書きします。 .IP LC_COLLATE -POSIX の規定によれば、この環境変数は検査 \fB\-name\fP で使われるパターンマッチングに影響する。 -GNU find は \fBfnmatch\fP(3) ライブラリ関数を使用しているので、LC_COLLATE -への対応はシステムのライブラリ次第である。また、この変数はアクション \fB\-ok\fP -に対する応答の解釈にも影響を及ぼす。 \fB\-ok\fP に対する応答の解釈に使用される実際のパターンは -LC_MESSAGES 変数によって選択されるのだが、そのパターン中に角カッコ式が使われている場合の解釈は、LC_COLLATE -の影響を受けるのである。 +POSIX の規定では、 この環境変数は、 テスト \fB\-name\fP で用いられるパターンマッチングに影響を及ぼします。 GNU find は、 +\fBfnmatch\fP(3) ライブラリ関数を利用しているので、 \fBLC_COLLATE\fP への対応は、 システムのライブラリ次第です。 +またこの変数は、 アクション \fB\-ok\fP の入力値の解釈にも影響します。 \fB\-ok\fP における入力値を解釈するものとして、 +実際に用いられるパターンは、 \fBLC_MESSAGES\fP 変数の値によって決定されますが、 そのパターンの中に角カッコによる表現が用いられていると、 +\fBLC_COLLATE\fP の影響を受けることになります。 .IP LC_CTYPE -この環境変数は、正規表現で使用される文字クラスの処理に影響する。 -システムの \fBfnmatch\fP(3) ライブラリ関数が対応している場合は、検査 \fB\-name\fP -で使われる文字クラスの処理にも影響を及ぼす。また、この変数は、アクション \fB\-ok\fP -が出すプロンプトに対してユーザが応答する際、諾否の判断に使用される正規表現に文字クラスが使われていれば、 -その解釈にも影響する。さらにまた、環境変数 LC_CTYPEは、ファイル名が表示されるとき、どの文字を表示不可能 (unprintable) -と見なすかにもかかわることになる。「変わり者のファイル名」セクションを参照していただきたい。 +システムの \fBfnmatch\fP(3) ライブラリ関数がこの環境変数をサポートしている場合、 この環境変数は、 正規表現で使用される文字クラスと、 +\fB\-name\fP テストで使われる文字クラスの扱い方に影響を及ぼします。アクション \fB\-ok\fP のプロンプトにおけるユーザー入力値の解釈には、 +正規表現が用いられますが、 この変数は、 その正規表現内の文字クラスの判断に影響します。 環境変数 \fBLC_CTYPE\fP は、 ファイル名の表示時に、 +表示できない文字を判断する処理に影響します。 「普通ではないファイル名」のセクションを参照してください。 .IP LC_MESSAGES -国際化されたメッセージで使用するロケールを決める。環境変数 `POSIXLY_CORRECT' -が設定されている場合でも、やはりこの変数によって、アクション \fB\-ok\fP -が出したプロンプトに対する応答をどう解釈するかが決まってくる。 +国際化されたメッセージで使用するロケールを設定します。 環境変数 \fBPOSIXLY_CORRECT\fP が設定されている場合は、 この変数によって、 +アクション \fB\-ok\fP のプロンプト入力値に対する解釈が決定します。 .IP NLSPATH -国際化メッセージ・カタログを置く場所を決める。 +国際化メッセージカタログを置く場所を設定します。 .IP PATH -\fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP, \fB\-okdir\fP -によって呼び出される実行ファイルを捜すために検索するディレクトリに影響する。 +\fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP, \fB\-okdir\fP から呼び出される実行ファイルが、 +どこにあるかを検索するディレクトリに影響します。 .IP POSIXLY_CORRECT -\fB\-ls\fP や \fB\-fls\fP が使用するブロックサイズを決める。\fBPOSIXLY_CORRECT\fP -が設定されているときは、1 ブロック 512 バイト、設定されていないときは、1 ブロック -1024 バイトである。 +\fB\-ls\fP や \fB\-fls\fP が使用するブロックサイズを決定します。 \fBPOSIXLY_CORRECT\fP が設定されている場合は、 1 ブロックが +512 バイト、 設定されていない場合は、 1 ブロックが 1024 バイトになります。 .IP -また、この変数を設定すると、警告メッセージを出さないのがデフォルトになる -(すなわち、 \fB\-nowarn\fP になるわけだ)。なぜならば、POSIX の規定では、\fB\-ok\fP -の出すプロンプトを除いて、標準エラーに出力されるメッセージは、すべて問題が起きたことを知らせるものであり、 -そのときの終了ステータスは 0 以外でなければならないからである。 +またこの変数を設定すると、 デフォルトで警告メッセージを出力しません (つまり \fB\-nowarn\fP が暗に指定されます)。 なぜなら POSIX +の規定では、 \fB\-ok\fP のプロンプトを除くと、 標準エラーに出力されるメッセージは、 すべて診断情報であり、 終了ステータスは 0 +以外を返さなければならないからです。 .IP -POSIXLY_CORRECT が設定されていない場合は、+zzz -が許可属性を表すシンボルとしてそれ自体有効な表現であるときを除き、\fB\-perm\fP +zzz -は \fB\-perm\fP /zzz とまったく同じように扱われる (訳注: 現在では、 -POSIXLY_CORRECT が設定されていない場合も、\fB\-perm\fP +\fImode\fP -の書式はサポートされていない。検査 \fB\-perm\fP の説明を参照)。POSIXLY_CORRECT -が設定されている場合は、許可属性の前に '+' を取る形式は、エラーとして処理される -(訳注: もちろん、+zzz がそれ自体有効なシンボル表現であるときは除く。たとえば、\fB\-perm +u+x\fP -といったものがそういう表現である。これは、\fB\-perm 0111\fP -という「ぴったり一致する」表現と等価になる)。 +\fBPOSIXLY_CORRECT\fP が設定されていない場合、 \fI+zzz\fP が適正なシンボリックモード表現でなかったら、 \fB\-perm +\fP\fI+zzz\fP という記述は、 \fB\-perm\fP \fI/zzz\fP として扱われます。 \fBPOSIXLY_CORRECT\fP が設定されている場合、 +この記述はエラーになります。 .IP -POSIXLY_CORRECT が設定されていると、アクション \fB\-ok\fP -が出すプロンプトに対するユーザの応答を解釈する際に、\fBfind\fP -の持つメッセージ翻訳ではなく、システムのメッセージ・カタログが参照される。 +\fBPOSIXLY_CORRECT\fP が設定されていると、 アクション \fB\-ok\fP のプロンプトに対する入力値の解釈は、 \fBfind\fP +の持つメッセージ翻訳を用いるのではなく、 システムのメッセージカタログに従って行われます。 .IP TZ -タイムゾーンに影響する。タイムゾーンは、\fB\-printf\fP や \fB\-fprintf\fP の日時に関係する一部の書式指定子で使用される。 -.SH 用例 +タイムゾーンに影響します。 タイムゾーンは、 \fB\-printf\fP や \fB\-fprintf\fP の時間関連ディレクティブにおいて利用されます。 +. +.SH 例 +.\" A bulleted \[bu] list of examples. +.SS "単純な `find|xargs` のアプローチ" +.IP \[bu] +\fI/tmp\fP ディレクトリ以下にある、 \fIcore\fP という名前のファイルを探して、 それを削除します。 .nf -\fBfind /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP - +\& +.in +4m +\fB$ find /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP +.in +\& .fi -\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを捜して、それを消去する。 -ファイル名 (パスを含む) の中に改行、シングルクォート、ダブルクォート、 -空白などを含むものがあると、正しく動作しないので、注意すること。 -.P -\fBfind /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP - +ただし、 ファイル名の中に、 改行、 シングルクォート、 ダブルクォート、 空白文字が含まれる場合には、 このコマンドは正しく動作しません。 +. +.SS "安全な `find \-print0 | xargs \-0` によるアプローチ" +.IP \[bu] +\fI/tmp\fP ディレクトリ以下にある、 \fIcore\fP という名前のファイルを探して、 それを削除します。 ファイルやディレクトリの名前に、 +シングルクォート、 ダブルクォート、 空白、 改行などが含まれていても、 適切に処理されます。 +.nf +\& +.in +4m +\fB$ find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP +.in +\& .fi -\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを捜して、それを消去する。 -ファイル名の処理に当たっては、ファイルやディレクトリの名前にシングルクォート、ダブルクォート、空白、改行などが含まれていても、適切に扱われるようにしている。 -検査 \fB\-name\fP を \fB\-type\fP の前に置いているのは、すべてのファイルに対して -\fBstat(2)\fP システムコールを行う無駄を省くためである。 - -.P +テスト \fB\-name\fP は、 \fB\-type\fP よりも前に置いています。 これは、 \fBstat\fP(2) の呼び出しが、 +すべてのファイルに対して行われることを防ぐためです。 +.PP +ただし、 \fBfind\fP がファイルシステム内を検索して、 一致するファイルを出力する時間と、 \fBxargs\fP +によるコマンド起動がそのファイルを処理する時間との間では、 まだ競合が発生する点に注意してください。 +. +.SS 任意の検索開始ポイントからの処理 +.IP \[bu] +プログラム \fIproggy\fP というものがあるとして、 あらかじめ処理を行って、 大量のNUL 区切りのファイル一覧を作るものであったとします。 +これを検索開始ポイントととして処理を行って、 その中から通常ファイルと空のファイルを検索します。 .nf -\fBfind . \-type f \-exec file \(aq{}\(aq \e;\fP - +\& +.in +4m +\fB$ proggy | find \-files0\-from \- \-maxdepth 0 \-type f \-empty\fP +.in +\& .fi -カレントディレクトリ以下のあらゆるファイルに対して file コマンドを実行する。 -波カッコをシングルクォートで囲んでいることに注目していただきたい。 -シェルスクリプトのブロック区切り記号として解釈されないようにするためである。 -同様に、セミコロンもバックスラッシュを使って保護している。 -こちらにもシングルクォートを使用してもよい。 - -.P +\fB`\-files0\-from\ \-`\fP と記述している部分は、 検索開始ポイントとする名前を \fI標準入力\fP から、 +つまりパイプから読み込むことを表しています。 そして \fB\-maxdepth\ 0\fP はサブディレクトリへの再帰的な検索は行わずに、 +そこに明示された対象のみを検索するようにしています (検索開始ポイントの指定がただ 1 つである場合)。 +. +.SS 各ファイルに対するコマンド実行 +.IP \[bu] +カレントディレクトリ以下の各ファイルに対して \fIfile\fP を実行します。 .nf -\fBfind / \e( \-perm \-4000 \-fprintf /root/suid.txt \(aq%#m %u %p\en\(aq \e) , \e\fP +\& +.in +4m +\fB$ find . \-type f \-exec file \(aq{}\(aq \e;\fP +.in +\& +.fi +波カッコをシングルクォートで囲んでいる点に注意してください。 これは、 句読点がシェルスクリプトの記号として、 解釈されないようにするためです。 +同様のこととして、 セミコロンもバックスラッシュを使ってエスケープしています。 シングルクォートを使うのでもかまいません。 +.PP +性能やセキュリティのことを考慮すると、 \fB`\-exec\ \&...\&\ +`\fP という記述が望まれるケースが多いかもしれません。 +. +.SS "異なる 2 つのアクション、 ファイルシステム検索は 1 回" +.IP \[bu] +ファイルシステムを検索するのは 1 回だけにして、 setuid ビットが立っているファイルやディレクトリの一覧は \fB/root/suid.txt\fP +に出力し、 サイズが大きいファイルの一覧は \fB/root/big.txt\fP に出力するようにします。 +.nf +\& +.in +4m +\fB$ find / \e\fP +.in +4m +\fB\e( \-perm \-4000 \-fprintf /root/suid.txt \(aq%#m %u %p\en\(aq \e) , \e\fP +.br \fB\e( \-size +100M \-fprintf /root/big.txt \(aq%\-10s %p\en\(aq \e)\fP - +.in -4m +.in -4m +\& .fi -全ファイルシステムを一回だけ探索して、setuid ビットの立っているファイルやディレクトリのリストを -\fB/root/suid.txt\fP に、サイズの大きいファイルのリストを \fB/root/big.txt\fP に出力する。 - -.P +この例では、 初めの 2 つの行に対して、 行継続文字 \(aq\e\(aq を用いています。 シェルがコマンド読み込みを行うにあたって、 +次の行も継続して読み込むように指示しています。 +. +.SS 期間の指定を使ったファイル検索 +.IP \[bu] +ホームディレクトリ内のファイルの中から、 修正時間が 24 時間未満のファイルを検索します。 .nf -\fBfind $HOME \-mtime 0\fP - +\& +.in +4m +\fB$ find $HOME \-mtime 0\fP +.in +\& .fi -ここ 24 時間の内に内容が更新されたファイルをホームディレクトリ以下で検索する。 -このコマンドがそういう動作になるのは、それぞれのファイルが最後に更新されてから現在までの経過時間が、24 時間で割られて、余りは捨てられるからである。 -そこで、ファイルが \fB\-mtime 0\fP にマッチするためには、過去 24 時間未満の期間内に内容が更新されていなければならないことになる。 - -.P +このコマンドがそういう動作になるのは、 各ファイルの最終更新時間が、 24 時間単位で割られて、 余りは捨てられるからです。 つまり、 ファイルが +\fB\-mtime 0\fP に一致するのは、 過去 24 時間未満の間に更新されていることを表します。 +. +.SS 許可属性を使ったファイル検索 +.IP \[bu] +実行可能であり、 読み出し不能なファイルを探します。 .nf -\fBfind /sbin /usr/sbin \-executable \e! \-readable \-print\fP - +\& +.in +4m +\fB$ find /sbin /usr/sbin \-executable \e! \-readable \-print\fP +.in +\& .fi -実行可能でありながら、読み出し不可能なファイルを捜す。 - -.P +. +.IP \[bu] +ファイルの所有者とグループが読み書き可能であって、 他ユーザーは、 読み込みのみで書き込み不可であるファイルを探します。 .nf -\fBfind . \-perm 664\fP - +\& +.in +4m +\fB$ find . \-perm 664\fP +.in +\& .fi -ファイルの所有者とグループは読むことも書くことも可能だが、他のユーザは読み出しのみ可能で書き込みはできないファイルを捜す。 -そうした条件を満たすものの、他の許可属性ビットも立っているような -(たとえば、そのファイルを実行できる人がいるような) ファイルは、この式にマッチしない。 - -.P +上に示す条件を満たすファイルであっても、 さらに別の許可属性ビットも立っているようなファイル (たとえば、 他ユーザーが実行できるなど) は、 +この条件に一致しません。 +. +.IP \[bu] +ファイルの所有者とグループが読み書き可能であり、 他ユーザーも読み込みが可能であるようなファイルを探します。 それ以外の許可属性ビット +(たとえば実行ビット) が立っていてもかまいません。 .nf -\fBfind . \-perm \-664\fP - +\& +.in +4m +\fB$ find . \-perm \-664\fP +.in +\& .fi -ファイルの所有者とグループは読むことも書くことも可能であり、他のユーザも読むことが可能であるようなファイルを捜す。 -それ以外の許可属性ビットについては (たとえば、実行許可ビット)、立っていてもいなくてもかまわない。この条件は、たとえば、 0777 -のモードを持つファイルにもマッチすることになる。 - -.P +したがって上は、 たとえばモードが \fI0777\fP であるようなファイルにも一致します。 +. +.IP \[bu] +(ファイルの所有者、 グループ、 他ユーザーの誰でも良いから) 書き込み可能なファイルを探します .nf -\fBfind . \-perm /222\fP - +\& +.in +4m +\fB$ find . \-perm /222\fP +.in +\& .fi -書き込める人のいるファイルを捜す (書き込めるのは、ファイルの所有者でも、グループでも、他の一般ユーザでもよい)。 - -.P +. +.IP \[bu] +ファイルの所有者あるいはグループのいずれかが、 書き込み可能なファイルを探します。 .nf -\fBfind . \-perm /220\fP -\fBfind . \-perm /u+w,g+w\fP -\fBfind . \-perm /u=w,g=w\fP - +\& +.in +4m +\fB$ find . \-perm /220\fP +\fB$ find . \-perm /u+w,g+w\fP +\fB$ find . \-perm /u=w,g=w\fP +.in +\& .fi -上記のコマンドは三つとも同じ動作をする。最初のものは、ファイルの許可属性を -8 進数で表し、後の二つは、シンボルによる表現形式を使っている。 -こうしたコマンドはどれも、ファイルの所有者やグループが書き込み可能なファイルを捜す。 -所有者とグループの両方が書き込み可能な場合しか、マッチしないわけではない。 -どちらか片方だけでも十分である。 - -.P +上のコマンドは 3 つとも同じ動作をします。 1 つめは、 ファイルの許可属性を 8 進数で表しています。 残りの 2 つは、 +シンボルによる表現形式を利用しています。 ファイルが一致する際には、 所有者とグループの両方が書き込み可能である必要はなく、 +どちらか一方が満たされれば一致します。 +. +.IP \[bu] +ファイルの所有者あるいはグループが、 ともに書き込み可能であるようなファイルを探します。 .nf -\fBfind . \-perm \-220\fP -\fBfind . \-perm \-g+w,u+w\fP - +\& +.in +4m +\fB$ find . \-perm \-220\fP +\fB$ find . \-perm \-g+w,u+w\fP +.in +\& .fi -この二つのコマンドは同じ動作をする。すなわち、ファイルの所有者とグループの両方が書き込み可能なファイルを捜す。 - -.P +上のコマンドは同じ処理を行ないます。 +. +.IP \[bu] +権限に関して、 さらに複雑な検索を以下に示します。 .nf -\fBfind . \-perm \-444 \-perm /222 \e! \-perm /111\fP -\fBfind . \-perm \-a+r \-perm /a+w \e! \-perm /a+x\fP - +\& +.in +4m +\fB$ find . \-perm \-444 \-perm /222 \e! \-perm /111\fP +\fB$ find . \-perm \-a+r \-perm /a+w \e! \-perm /a+x\fP +.in +\& .fi -この二つのコマンドは両方とも次のような条件のファイルを捜す。 -その条件とは、誰にでも読み出すことが可能で (\fB\-perm \-444\fP や \fB\-perm \-a+r\fP -がそれにに当たる)、書き込み許可ビットが少なくとも一つは立っているが -(\fB\-perm /222\fP や \fB\-perm /a+w\fP)、誰にも実行することはできない (\fB! \-perm /111\fP -や \fB! \-perm /a+x\fP) というものである。 - -.P +この 2 つのコマンドは、 両方とも次のような条件のファイルを探します。 つまり、 誰にでも読み出すことが可能 (\fB\-perm \-444\fP または +\fB\-perm \-a+r\fP) であって、 書き込み許可ビットが少なくとも 1 つは立っているもの (\fB\-perm /222\fP または \fB\-perm +/a+w\fP)、 ただし誰にも実行ができないもの (\fB! \-perm /111\fP や \fB! \-perm /a+x\fP)、 というものです。 +. +.SS "除外 \- ファイルやサブディレクトリの除き方" +.IP \[bu] +\fI/source\-dir\fP の内容を \fI/dest\-dir\fP にコピーします。 ただし \fI.snapshot\fP という名前のファイル、 +またはディレクトリ (その中身) は除きます。 さらに、 名前が `\(ti' で終わるファイル、 またはディレクトリも除きますが、 +その中身までは除きません。 .nf -\fBcd /source\-dir\fP -\fBfind . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 \e)|\fP -\fBcpio \-pmd0 /dest\-dir\fP - +\& +.in +4m +\fB$ cd /source\-dir\fP +\fB$ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 \e) \e\fP +.br +.in +4m +\fB| cpio \-pmd0 /dest\-dir\fP +.in -4m +.in -4m +\& .fi -このコマンドは \fB/source\-dir\fP の中身を \fB/dest\-dir\fP にコピーするが、 -その際 \fB.snapshot\fP という名前のファイルやディレクトリ (及び、そのディレクトリ内にあるもの) を除外している。 -さらにこのコマンドは、名前の末尾に \fB~\fP が付くファイルやディレクトリも除外するが、 -そうしたディレクトリの中身については除外の対象にしない。 -\fB\-prune \-o \e( \&...\& \-print0 \e)\fP という構文はかなりよく利用される。 -ここで肝腎なのは、\fB\-prune\fP の前にある式がマッチする項目は、\fBfind\fP の探索の対象から -\fB\-prune\fP によって取り除かれる (訳注: pruned、枝刈りされる) ということである。 -しかし、アクション \fB\-prune\fP 自体は返り値として真を返すので、直後に続く \fB\-o\fP -によって、探索の対象から取り除かれなかったディレクトリに対してだけ \fB\-o\fP の右辺の評価が行われることになる -(探索の対象から取り除かれたディレクトリの中身は、処理の対象にすらならないのだから、そうしたものはもう関係がない)。 -\fB\-o\fP の右辺の式をカッコで囲んでいるのは、見やすくするためにすぎない。 -アクション \fB\-print0\fP が行われるのは、 \fB\-prune\fP が適用されなかった項目のみであることを強調しているだけだ。 -述語間のデフォルトの結合は and であり、and の結合は \fB\-o\fP よりも強いから、 -カッコがあってもデフォルトの動作と同じなのだが、カッコを使うと、何をやっているかがわかりやすくなる。 - -.P +\fB\-prune \-o \e( \&...\& \-print0 \e)\fP という形は、 ごく普通に利用されます。 考え方としては、 \fB\-prune\fP +の前にある式が、 取り除く対象になるということです。 アクション \fB\-prune\fP 自体は、 返り値として true を返します。 したがって、 +直後に \fB\-o\fP があるおかげで、 取り除き (prune) の対象にならなかったディレクトリが、 \fB\-o\fP の右辺によって評価されることになります +(取り除きの対象になったディレクトリの中身は、 処理の対象になっていないので、 中身を考慮する必要はありません)。 \fB\-o\fP +の右辺の式をカッコで囲んでいるのは、 わかりやすくするためです。 このように記述することで、 アクション \fB\-print0\fP の処理対象が、 +\fB\-prune\fP の処理対象以外あることが、 はっきりします。 テストとテストの間にある `and' 条件は、 \fB\-o\fP +よりも強く結びつくものであって、 それがデフォルトになっていますが、 カッコで囲めば、 どのように処理されるかがよくわかります。 +. +.IP \[bu] +以下に示されるようなプロジェクトディレクトリがあって、 さらに、 関連する SCM の管理ディレクトリがあるとします。 これに対して、 +プロジェクトルートから効率の良い検索を行います。 .nf -\fBfind repo/ \e( \-exec test \-d {}/.svn \e; \-or \e\fP -\fB\-exec test \-d {}/.git \e; \-or \-exec test \-d {}/CVS \e; \e) \e\fP -\fB\-print \-prune\fP +\& +.in +4m +\fB$ find repo/ \e\fP +.in +4m +\fB\e( \-exec test \-d \(aq{}/.svn\(aq \e; \e\fP +\fB\-or \-exec test \-d \(aq{}/.git\(aq \e; \e\fP +\fB\-or \-exec test \-d \(aq{}/CVS\(aq \e; \e\fP +\fB\e) \-print \-prune\fP +.in -4m +.in -4m +\& .fi - -以下のようなプロジェクトのディレクトリとそれに関連する SCM (ソースコード管理システム) -の管理用ディレクトリがある場合に、プロジェクトのルートを効率的に検索する。 - +出力例: .nf +\& +.in +4m \fBrepo/project1/CVS\fP \fBrepo/gnu/project2/.svn\fP \fBrepo/gnu/project3/.svn\fP \fBrepo/gnu/project3/src/.svn\fP \fBrepo/project4/.git\fP - +.in +\& .fi -この例では、\fB\-prune\fP を使うことによって、すでにプロジェクトのルートであることがわかったディレクトリ以下で不必要な探索をしないですませている -(たとえば、project3/src は探索しないが、それは project3/.svn -がすでに見つかっているからだ)。それでいて、同格のディレクトリ (たとえば、 -project2 と project3) はきちんと見つかるようにしている。 -(訳注: この例の場合、カッコは必要である。and の結合は or よりも強いので。) - +この例では、 \fB\-prune\fP を指定することによって、 すでに対象が見つかったディレクトリの配下は、 それ以上の検索が不要なので、 +検索を行わないようにしています (たとえば \fIproject3/src\fP は検索されません。 その理由は \fIproject3/.svn\fP が、 +すでに見つかっているからです)。 しかし、 となり合わせのディレクトリ (たとえば、 \fIproject2\fP と \fIproject3\fP) は、 +確実に検索されます。 +. +.SS この他の利用例 +.IP \[bu] +複数のファイルタイプを検索します。 +.nf +\& +.in +4m +\fB$ find /tmp \-type f,d,l\fP +.in +\& +.fi +ファイルタイプとして、 カンマ区切りのリスト (GNU 拡張) を指定して、 それぞれファイル、 ディレクトリ、 シンボリックリンクを \fI/tmp\fP +ディレクトリの中から検索します。 同じことは、 やや長くなりますが、 移植性の高い記述として、 以下のようにしても同じです。 +.nf +\& +.in +4m +\fB$ find /tmp \e( \-type f \-o \-type d \-o \-type l \e)\fP +.in +\& +.fi +. +.IP \[bu] +特定の名前 \fIneedle\fP を持ったファイルを検索して、 最初にそれが見つかった時点で、 すぐに終了するようにします。 +.nf +\& +.in +4m +\fB$ find / \-name needle \-print \-quit\fP +.in +\& +.fi +. +.IP \[bu] +\fB\-printf\fP アクションの書式ディレクティブ \fB%f\fP と \fB%h\fP が、 境界条件において、 どのように解釈されるかを示します。 +.nf +\& +.in +4m +\fB$ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find \-maxdepth 0 \-printf '[%h][%f]\en'\fP +\fB[.][.]\fP +\fB[.][..]\fP +\fB[][/]\fP +\fB[][tmp]\fP +\fB[/tmp][TRACE]\fP +\fB[.][compile]\fP +\fB[compile/64/tests][find]\fP +.in +\& +.fi +. .SH 終了ステータス -.PP -\fBfind\fP は、すべてのファイルを問題なく処理できれば、ステータス 0 で終了する。 -エラーが起きた場合の終了ステータスは、1 以上である。 -ここではあえてごく大雑把な言い方をしているが、返り値が 0 以外だった場合は、\fBfind\fP -が出した結果を正しいと思い込まない方がよいだろう。 - -エラーが起きた場合、\fBfind\fP は、指定されたすべての動作を完了せず、 -その場で終了してしまうことがある。その場合は、たとえば、探索開始点のあるものが調査されなかったり、 -\fB\-exec \&...\& {} +\fP や \fB\-execdir \&...\& {} +\fP -で呼び出されることになっているプログラムに実行されないものが生じたりするかもしれない。 - - -.SH 関連項目 -\fBlocate\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1), \fBxargs\fP(1), \fBchmod\fP(1), -\fBfnmatch\fP(3), \fBregex\fP(7), \fBstat\fP(2), \fBlstat\fP(2), \fBls\fP(1), -\fBprintf\fP(3), \fBstrftime\fP(3), \fBctime\fP(3) - -\fBfind\fP については、充実した関連文書が Texinfo マニュアルの形で保守されている。 -\fBinfo\fP と \fBfind\fP プログラムが、御使用のサイトできちんとインストールされているならば、 -\fBinfo find\fP とコマンドを打ち込むことで、詳細なマニュアルが読めるはずだ。 -(訳注: \fBinfo find\fP だと、説明が途中からになるので、\fBinfo "Finding files"\fP -と打ち込むことをお勧めする。) +\fBfind\fP は、 すべてのファイルを正常に処理できれば、 ステータス 0 で終了します。 エラーが起きた場合は、 1 以上を返します。 ここでは、 +わざと大まかな説明としていますが、 返り値が 0 以外だった場合、 \fBfind\fP の結果は正しいと思わないでください。 +エラーが発生した場合、 \fBfind\fP は、 指定されたアクションを完了しないまま、 その場で終了することがあります。 たとえば、 +検索開始ポイントの中には、 検索されずに終わるものもあります。 あるいは \fB\-exec\ \&...\&\ {}\ +\fP や \fB\-execdir\ \&...\&\ {}\ +\fP において、 まだ呼び出しが行われていないプログラムが、 実行されないまま終了することもあります。 +. .SH 履歴 -findutils\-4.2.2 以来、ファイル名のパターンに使われるシェルのメタ文字 -(`*', `?', `[]' など) は、先頭の `.' にマッチする。 -これは、IEEE POSIX interpretation 126 がそう要求しているからである。 +findutils\-4.2.2 以降、 ファイル名のパターンに使われるシェルのメタ文字 (`*', `?', `[]' など) は、 先頭の `.' +に一致します。 これは IEEE POSIX interpretation 126 が要求しているためです。 .P -findutils\-4.3.3 以来、\fB\-perm /000\fP -は、どんなファイルにもマッチしないではなく、すべてのファイルにマッチする、になっている。 +findutils\-4.3.3 以降 \fB\-perm\ /000\fP は、 どんなファイルにも一致しない、 ではなく、 すべてのファイルに一致する、 +になりました。 .P -ナノ秒まで表現するタイムスタンプは findutils\-4.3.3 で実装された。 +ナノ秒まで表現するタイムスタンプは、 findutils\-4.3.3 で実装されました。 .P -findutils\-4.3.11 以来、アクション \fB\-delete\fP は、実行に失敗すると、 -\fBfind\fP の終了ステータスを 0 以外の値にする。とは言え、\fBfind\fP -がその場で即座に終了してしまうわけではない。以前のバージョンでは、\fB\-delete\fP -が実行に失敗しても、\fBfind\fP の終了ステータスは影響を受けなかった。 +findutils\-4.3.11 以降、 アクション \fB\-delete\fP の処理に失敗すると、 \fBfind\fP の終了ステータスは 0 +以外の値になります。 ただし、 \fBfind\fP は、 その場ですぐには終了しません。 以前のバージョンでは、 \fB\-delete\fP の処理が失敗しても、 +\fBfind\fP の終了ステータスとは無関係でした。 .TS l l l . -Feature Added in Also occurs in +機能 追加時期 他システムの対応 +\-files0\-from 4.9.0 \-newerXY 4.3.3 BSD \-D 4.3.1 \-O 4.3.1 @@ -1575,63 +1511,72 @@ Feature Added in Also occurs in \-iregex 3.8 .TE .P -\fB\-perm +MODE\fP という書き方は、findutils\-4.5.12 で廃止された。代わりに、\fB\-perm /MODE\fP を使用すること。 -\fB+MODE\fP という記法は、2005 年にリリースされた findutils\-4.2.21 以来非推奨になっていた。 -.P -.SH バグにあらず +\fB\-perm +MODE\fP という文法は、 findutils\-4.5.12 において削除されました。 代わりに、 \fB\-perm /MODE\fP +を使用してください。 \fB+MODE\fP という文法は、 2005 年にリリースされた findutils\-4.2.21 以降、 非推奨となっています。 +. +.SH バグではないもの +.SS 意外なオペレーター優先順位 +以下のようなコマンド \fBfind . \-name afile \-o \-name bfile \-print\fP は、 \fIafile\fP を出力しません。 +なぜなら実際には \fBfind . \-name afile \-o \e( \-name bfile \-a \-print \e)\fP と同じものだからです。 +\fB\-a\fP の優先順位は \fB\-o\fP よりも高いことを忘れないでください。 またテストとテストの間に、 オペレーターが指定されていないければ、 +\fB\-a\fP であるとみなされる点も注意してください。 +.SS "エラーメッセージ \(lqpaths must precede expression\(rq" .nf \fB$ find . \-name *.c \-print\fP find: paths must precede expression -Usage: find [\-H] [\-L] [\-P] [\-Olevel] [\-D help|tree|search|stat|rates|opt|exec] [path...] [expression] +find: possible unquoted pattern after predicate `\-name'? .fi .P -こうしたエラーが起きる原因は、 \fI*.c\fP がシェルによって展開されて、\fBfind\fP -が実際に受け取るコマンドラインが、たとえば次のようなものになってしまうからである。 +\fI*.c\fP というパターンをシェルが展開した際に、 カレントディレクトリの複数ファイルに該当した場合に、 このエラーが発生します。 この場合には、 +対象となったファイル名が、 \fBfind\fP におけるコマンドライン上に、 以下のように受け渡されることになります。 .nf - -\fBfind . \-name bigram.c code.c frcode.c locate.c \-print\fP - +. +\fBfind . \-name frcode.c locate.c word_io.c \-print\fP +. .fi -当然ながら、こんなコマンドがうまく動くわけがない。書き方を改めて、パターンを引用符で囲むか、ワイルドカードをエスケープするべきだ。 +上のコマンドは、 もちろん動作しません。 述語表現である \fB\-name\fP の引数は、 パターンを 1 つしか受けつけないからです。 +そのような記述とするのではなく、 パターンの表現部分は、 クォートでくくるか、 ワイルドカードをエスケープしてください。 以下のようにすることで、 +ファイル名がシェルによって展開されることなく、 \fBfind\fP のファイル名の一致検索の際に、 +ワイルドカードを用いたパターン検索ができるようになります。 .nf \fB$ find . \-name \(aq*.c\(aq \-print\fP \fB$ find . \-name \e*.c \-print\fP .fi - +. .SH バグ +POSIX が規定する \fBfind\fP の動作には、 セキュリティ上の問題があって、 これを修正することはできません。 たとえば、 アクション +\fB\-exec\fP は、 本質的に安全ではないため。 代わりに \fB\-execdir\fP を使ってください。 +. .P -POSIX 規格が \fBfind\fP について規定している動作には、セキュリティ上の問題があるが、 -それはその動作に内在する問題なので、修正することができない。一例を挙げると、アクション -\fB\-exec\fP は本質的に安全ではない。だから、\fB\-execdir\fP -の方を使うべきなのだ。より詳しい情報については、\fBFinding Files\fP をご覧いただきたい。 -.P -環境変数 \fBLC_COLLATE\fP はアクション \fB\-ok\fP にまったく影響を及ぼさない -(訳注: 環境変数 \fBLC_COLLATE\fP の説明では 「この変数はアクション \fB\-ok\fP -に対する応答の解釈にも影響を及ぼす」と述べている)。 -.P -バグ報告の最善の方法は、http://savannah.gnu.org/bugs/?group=findutils -にある書式を使用することである。そうすれば、問題解決の進行状態を追うことができるからだ。 -\fBfind\fP(1) や findutils パッケージ全般についてのその他のご意見は、 -\fIbug\-findutils\fP メーリングリストにお出しになればよい。 -メーリングリストに参加するには、\fIbug\-findutils\-request@gnu.org\fP 宛に -E メールを送っていただきたい。 -.SH 翻訳について -この翻訳は findutils-4.6.0 所収の find.1 の翻訳である。 -お手元の findutils は、もっと新しいバージョン、たとえば 4.7.0-git -になっているかもしれない。だが、4.7.0 は開発中の版なので、manpage -も変化し続けており、現時点で最新の 4.7.0 -のマニュアルを翻訳しても、お手元の英語マニュアルとは内容が微妙に違うかもしれないのだ。 -バージョンが同じ 4.7.0 なのに、それでは紛らわしい。そこで、あえて現在の安定版、4.6.0 -のマニュアルを底本にした。 +環境変数 \fBLC_COLLATE\fP は、 アクション \fB\-ok\fP に対しては、 何の効果も及ぼしません。 +. +.SH バグ報告 +GNU findutils オンラインヘルプ: + +.br +翻訳に関するバグ報告 .PP -4.6.0 と\fB最近の\fP 4.7.0-git との大きな相違は、\fB\-D\fP -のデバックオプションに exec と search が増えていることと、検査 -\fB\-type\fP や \fB\-xtype\fP で "-type f,l" -などと、複数のファイルタイプをコンマで区切って指定できるようになったことくらいである。 +その他の問題について GNU Savannah バグトラッカー経由での報告: +.RS + +.RE +GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: +.RS + +.RE +. +.SH 著作権 +Copyright \(co 1990\-2022 Free Software Foundation, Inc. License GPLv3+: GNU +GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. There is +NO WARRANTY, to the extent permitted by law. +. +.SH 関連項目 +\fBchmod\fP(1), \fBlocate\fP(1), \fBls\fP(1), \fBupdatedb\fP(1), \fBxargs\fP(1), +\fBlstat\fP(2), \fBstat\fP(2), \fBctime\fP(3) \fBfnmatch\fP(3), \fBprintf\fP(3), +\fBstrftime\fP(3), \fBlocatedb\fP(5), \fBregex\fP(7) .PP -なお、バージョン 4.4.2 までの翻訳では、述語の Test -(\fB\-mtime\fP, \fB\-name\fP, \fB\-type\fP など) -を「判別式」と訳してきたが、今回は素直に「検査」と訳すことにした。同じものである。 -「条件、条件式、検索式、検索条件、テスト」などの訳語もあったと思う。 -これまでの「判別式」という訳語に慣れた方には、ご迷惑だったかもしれない。 -お許しいただきたい。(2018/03/03) +完全なドキュメント +.br +またローカルにおいては \fBinfo find\fP により参照できます。 diff --git a/manual/GNU_findutils/release/man1/locate.1 b/manual/GNU_findutils/release/man1/locate.1 index 3f4c0d7e..c4b81e16 100644 --- a/manual/GNU_findutils/release/man1/locate.1 +++ b/manual/GNU_findutils/release/man1/locate.1 @@ -1,112 +1,201 @@ -.\" This file documents the GNU utilities for finding files that match -.\" certain criteria and performing various operations on them. -.\" -.\" Copyright (C) 1994 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. -.\" -.\" 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. +.\" -*- nroff -*- +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved. .\" Translated Thu May 11 1997 by NAKANO Takeo +.\" Translated for 4.9.0, 2022/04/19 ribbon .\" -.TH LOCATE 1L \" -*- nroff -*- +.TH LOCATE 1 .SH 名前 locate \- ファイル名データベースからパターンに合うものを表示する +. .SH 書式 -.B locate -[\-d path] [\-\-database=path] [\-\-version] [\-\-help] pattern... +\fBlocate\fP [\-d path | \-\-database=path] [\-e | \-E | \-\-[non\-]existing] [\-i | +\-\-ignore\-case] [\-0 | \-\-null] [\-c | \-\-count] [\-w | \-\-wholename] [\-b | +\-\-basename] [\-l N | \-\-limit=N] [\-S | \-\-statistics] [\-r | \-\-regex ] +[\-\-regextype R] [\-\-max\-database\-age D] [\-P | \-H | \-\-nofollow] [\-L | +\-\-follow] [\-\-version] [\-A | \-\-all] [\-p | \-\-print] [\-\-help] pattern... +. .SH 説明 -このマニュアルページは GNU 版 -.BR locate -の使い方を説明したものである。 -.B locate -は与えられたパターンそれぞれに対して、 -一つまたは複数のファイル名データベースを検索し、 -パターンを含むファイル名を表示する。 -パターンにはシェルで用いるメタキャラクタ -(`*', `?' 及び `[]') を用いることができる。 -メタキャラクタは `/' や `.' を特別扱いしない。 -従って `foo*bar' というパターンは -`foo3/bar' というファイル名にマッチするし、 -`*duck*' というパターンは `lake/.ducky' にマッチする。 -メタキャラクタを含んだパターンは、 -シェルによって展開されないように引用符で囲む必要がある。 -.PP -パターンが \(em メタキャラクタを含まない \(em -通常の文字列である場合には、 -.B locate -はその文字列を (部分的にでも、またどんな位置にでも) -含むファイル名をすべて表示する。 -もしパターンがメタキャラクタを含む場合には、 -.B locate -はパターンに正確に合うファイル名のみを表示する。 -従って、通常メタキャラクタを含むパターンには、 -最初と最後に `*' をつけておくと良い。 -ただしファイル名の先頭または最後に意識的にマッチさせたい場合はこの限りではない。 -.PP -ファイル名データベースは、 -最後に更新された時点において、 -システムに存在していたファイルのリストからなっている。 -システム管理者はデフォルトで用いるデータベースのファイル名や更新の頻度、 -またどのディレクトリの情報をデータベースに入れるかなどを選択することができる。 -.BR updatedb (1L) -を見よ。 -.SH オプション -.TP -.I "\-d \fIpath\fP, \-\-database=\fIpath\fP" -デフォルトのファイル名データベースの代わりに、 -\fIpath\fP にあるものを探す。 -\fIpath\fP はデータベースファイル名のリスト (コロン区切り) である。 -検索するデータベースファイルのリストを指定するには、環境変数 -.B LOCATE_PATH -を利用することもできる。 -このオプションと環境変数が両方とも指定された場合には、 -オプションの方が優先される。 +このマニュアルページは GNU 版 \fBlocate\fP の使用法を説明しています。 \fBlocate\fP は、 指定された各パターンに対して、 +一つまたは複数のファイル名データベースを検索して、 パターンに一致するファイル名を表示します。 パターンには、 シェルで用いるようなメタキャラクター +(`*', `?' 及び `[]') が利用できます。 メタキャラクターは `/' や `.' を特別扱いしません。 したがって `foo*bar' +というパターンは、 `foo3/bar' というファイル名に一致します。 また `*duck*' というパターンは、 `lake/.ducky' +に一致します。 メタキャラクターを含むパターンは、 シェルによって展開されないようにクォートで囲む必要があります。 +.P +パターンが通常の文字列である場合、 つまりメタキャラクターを含んでいない場合、 \fBlocate\fP は、 +ファイル名のどこかにその文字列が含まれているようなファイルをすべて表示します。 パターンにメタキャラクターが含まれる場合、 \fBlocate\fP は、 +パターンに一致するファイル名だけを表示します。 このことから、 メタキャラクターを含むパターンには、 通常は先頭に `*' をつけておいてください。 +同じように、 最後にもたいていは `*' をつけておきます。 ただしファイル名の先頭または最後に、 意図的に一致させたいパターンとするのであれば、 +その必要はありません。 +.P +ファイル名データベースは、 最後に更新された時点において、 +システムに存在していたファイルのリストからなっています。システム管理者はデフォルトで用いるデータベースのファイル名や更新の頻度、 +またどのディレクトリの情報をデータベースに入れるかなどを選択することができます。\fBupdatedb\fP(1) を参照してください。 .P -ファイル名データベースのフォーマットは GNU 版 -.B find -及び -.B locate -のバージョン 4.0 から変更された。この変更によって、 -バイトオーダーの異なるマシンの間で -データベースを共有することが可能になった。この版の -.B locate -は、古い版の GNU -.B locate -や Unix 版 -.B locate -及び -.BR find -向けに作成されたデータベースを自動的に認識できる。 -.TP -.I "\-\-help" -.B locate -のオプションに対する短い説明を表示して終了する。 -.TP -.I "\-\-version" -.B locate -のバージョンを表示して終了する。 +\fBlocate\fP は端末に対して出力を行ないます。 出力に適さない文字はエスケープ出力されます。 これは \fBfind\fP コマンドの \-print +処理と同様にして行われます。 出力先が端末でない場合、 ファイル名はその文字のまま出力されます。 +. +.SH オプション +.TP +\fI\-0, \-\-null\fP +区切り文字として、 改行文字ではなく ASCII NUL 文字を用います。 +.TP +\fI\-A, \-\-all\fP +必須の引数すべてに一致する名前のみを表示します。 つまりすべてに一致せず、 1 つやその一部にのみに一致するものは表示しません。 +.TP +\fI\-b, \-\-basename\fP +指定されたパターンが、 データベース内にあるファイル名の最後の構成要素に一致した場合に、 出力結果として一致したものとします。 最後の構成要素は、 +通常「ベース名」と表現されます。 +.TP +\fI\-c, \-\-count\fP +一致したファイル名を出力するのではなく、 一致した総数を出力します。 ただし \-\-\fIprint\fP (\-p) も指定された場合は除きます。 +.TP +\fI\-d path, \-\-database=path\fP +デフォルトのファイル名データベースを検索するのではなく、 \fIpath\fP にあるファイル名データベースを検索します。 複数のデータベースファイルは、 +コロンで区切って指定します。 環境変数 \fBLOCATE_PATH\fP を利用して、 検索するデータベースファイルを指定することもできます。 +オプションと環境変数がともに指定された場合は、 オプションが優先されます。 パス指定に空の要素が指定された場合は、 +デフォルトのデータベースファイル名と同義であるものとして扱われます。 データベースは stdin から指定することもできます。 これを行う場合は +\fIpath\fP の要素として `\-' を利用します。 \fIpath\fP の構成要素に複数の `\-' が指定されていた場合、 2 つめ以降は無視されます +(そして警告メッセージが出力されます)。 +.IP +ファイル名データベースのフォーマットは、 GNU \fBfind\fP と \fBlocate\fP のバージョン 4.0 から変更されました。 +このフォーマットによって、 バイトオーダーが異なるマシン間においても、 データベースが共有できるようになりました。 \fBlocate\fP +の本バージョンでは、 GNU \fBlocate\fP の旧バージョン、 あるいは Unix バージョンの \fBlocate\fP や \fBfind\fP +を自動的に識別して読み込みを行ないます。 古い locate のデータベースフォーマットへのサポートは、 今後のリリースにおいては継続しません。 +.TP +\fI\-e, \-\-existing\fP +現在存在している名前のみを表示します (データベースが生成された際に存在していた名前を表示するわけではありません)。 +なおデータベース内に一致する名前が多数存在していると、 プログラム処理速度が多少低下することがあります。 +プログラム内においてこのオプションを利用している場合は、 \fBlocate\fP がチェックした後のファイルは、 削除されてしまい、 +確認できないことがある点に注意してください。 +.TP +\fI\-E, \-\-non\-existing\fP +現在存在していない名前のみを表示します (データベースが生成された際に存在していた名前を表示するのではありません)。 +なおデータベース内に一致する名前が多数存在していると、 プログラム処理速度が多少低下することがあります。 +.TP +\fI\-\-help\fP +\fBlocate\fP のオプション概要を表示して終了します。 +.TP +\fI\-i, \-\-ignore\-case\fP +パターンとファイル名において、 英字の大文字小文字を区別しません。 +.TP +\fI\-l N, \-\-limit=N\fP +一致する数を N に制限します。 制限数を本オプションにより設定した場合、 \-c オプションによって表示される結果数は、 +本オプションの値を上回ることはありません。 +.TP +\fI\-L, \-\-follow\fP +(\-e や \-E オプションとともに使って) ファイルの存在チェックを行う場合、 シンボリックリンクが壊れている場合には、 +存在していないものとして扱います。 これはデフォルトの動作です。 +.TP +\fI\-\-max\-database\-age D\fP +通常 \fBlocate\fP は、 検索するデータベースが 8 日以上古かった場合に、 警告メッセージを表示します。 このオプションは、 その日数を 8 +日以外のものに設定する場合に用います。 負数を指定した場合の動作は未定です。 +.TP +\fI\-m, \-\-mmap\fP +指定可能ですが、 ただし何も行いません。 これは BSD 版の \fBlocate\fP との互換性のために存在しています。 +.TP +\fI\-P, \-H, \-\-nofollow\fP +(\-e や \-E オプションとともに使って) ファイルの存在チェックを行う場合、 シンボリックリンクが壊れている場合には、 +存在してるものとして扱います。 本オプションの \-H 形式は、 \fBfind\fP に合わせるために提供されています。 したがって \-H よりも \-P +を用いることが推奨されます。 +.TP +\fI\-p, \-\-print\fP +\-\-statistics (\-S) や \-\-count (\-c) が指定されているために、 検索結果が表示されないものについて、 その結果を表示します。 +.TP +\fI\-r, \-\-regex\fP +コマンドライン上から指定されるこのパターンは、 glob パターンとしてではなく、 正規表現として解釈されます。 この正規表現は、 \fBemacs\fP +内において用いられるものと同様のものでしたが、 "." が改行文字として扱われるという違いがありました。 GNU \fBfind\fP では、 +同じ正規表現が用いられます。 ファイル名のフルパスが、 指定された正規表現にマッチするときに、 そのファイル名が表示されます (または \-c +オプションが指定された場合、 その数がカウントされます)。 正規表現を使ってフルパスの前後を完全に一致させたい場合は、 +正規表現においてよく用いるように、 ^ と $ の文字を用いて指定します。 +.TP +\fI\-\-regextype R\fP +正規表現の方言である R を用います。 サポートされる方言は以下です。 `findutils\-default', `posix\-awk', +`posix\-basic', `posix\-egrep', `posix\-extended', `posix\-minimal\-basic', +`awk', `ed', `egrep', `emacs', `gnu\-awk', `grep', `sed' 。 この方言の詳細な説明は +Texinfo ドキュメントを参照してください。 +.TP +\fI\-s, \-\-stdio\fP +指定可能ですが、 ただし何も行いません。 これは BSD 版の \fBlocate\fP との互換性のために存在しています。 +.TP +\fI\-S, \-\-statistics\fP +各 locate データベースについての統計情報を表示します。 必須の引数が指定されていなければ、 検索処理は行わずに終了します。 BSD +版との互換性のために、 \-\-statistics と同じ意味で \-S が受け付けられます。 ただし \fBlocate \-S\fP による出力結果は、 +\fBlocate\fP の GNU 版と BSD 版では異なります。 +.TP +\fI\-\-version\fP +\fBlocate\fP のバージョン番号を表示して終了します。 +.TP +\fI\-w, \-\-wholename\fP +データベース内に保持されているファイル名との完全一致を行います。 これはデフォルトの動作です。 .SH 環境変数 -.TP -.B LOCATE_PATH -コロンによって区切られた検索するデータベースのリスト。 +.TP +\fBLOCATE_PATH\fP +検索するデータベース名をコロンで区切ったリスト。 この設定値の先頭あるいは末尾にコロンを設定するか、 あるいは設定内に 2 つのコロンを含めると、 +\fBlocate\fP の異なるバージョン間において、 検索結果が異なることになります。 +. +.SH 履歴 +\fBlocate\fP プログラムは、 プログラムの高速検索のために、 James A. Woods が BSD に提供したところから始まりました。 +これは以下の論文において説明されたものです。 \fIFinding Files Fast\fP which was published in Usenix +\fI;login:\fP, Vol 8, No 1, February/March, 1983, pp. 8\-10. \fBfind\fP +プログラムのアクションが指定されなかった場合に、 \fB\-print\fP アクションがデフォルトとして扱われるようになり、 \fBfind\fP +\fBpattern\fP の実装が変更されました。 そこで BSD 開発者は、 この高速検索機能を \fBlocate\fP に移転しました。 GNU による +\fBlocate\fP も、 同一のコードに基づいて実装されています。 +.P +\fBlocate\fP の主要な変更を、 以下に降順で示します。 +.TS +tab(|); +LL. +4.3.7 | 旧DBフォーマットにてバイトオーダー順に依存しない対応。 +4.3.3 | locate の \fI\-i\fP がマルチバイト文字を適切に対応。 + | \fI\-\-max_db_age\fP の導入。 +4.3.2 | slocate データベースフォーマットの導入。 +4.2.22| \fI\-\-all\fP オプションの導入。 +4.2.15| \fI\-\-regex\fP オプションの導入。 +4.2.14| \fI\-L, \-P, \-H\fP の各オプションの導入。 +4.2.12| \fBLOCATE_PATH\fP における空指定は、 デフォルトデータベースを表します。 +4.2.11| \fI\-\-statistics\fP オプションの導入。 +4.2.4 | \fI\-\-count\fP と \fI\-\-limit\fP の導入。 +4.2.0 | glob 文字がファイル名全体に一致するように。 +4.0 | LACATE02 データベースフォーマットの導入。 +3.7 | Locate が複数データベースを検索できるようにします。 +.TE +. +.SH バグ +\fBlocate\fP データベースは、 改行文字を含むファイル名でも適切に処理を行います。 ただしそれは、 システムの sort コマンドの \fI\-z\fP +オプションが正しく動作する場合です。 \fBlocate\fP が返すファイル名に改行文字が含まれているべき、 と思われる場合には、 \fI\-\-null\fP +オプションの利用を検討してください。 +. +.SH バグ報告 +GNU findutils オンラインヘルプ: + +.br +翻訳に関するバグ報告 +.PP +その他の問題について GNU Savannah バグトラッカー経由での報告: +.RS + +.RE +GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: +.RS + +.RE +. +.SH 著作権 +Copyright \(co 1994\-2022 Free Software Foundation, Inc. License GPLv3+: GNU +GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. There is +NO WARRANTY, to the extent permitted by law. +. .SH 関連項目 -.BR find (1L), -.BR locatedb (5L), -.BR updatedb (1L), -.BR xargs (1L) +\fBfind\fP(1), \fBupdatedb\fP(1), \fBxargs\fP(1), \fBglob\fP(3), \fBlocatedb\fP(5) +.PP +完全なドキュメント .br -.B Finding Files -(on-line in Info, or printed) - +またローカルにおいては \fBinfo locate\fP により参照できます。 diff --git a/manual/GNU_findutils/release/man1/updatedb.1 b/manual/GNU_findutils/release/man1/updatedb.1 index 29968aac..8093ee32 100644 --- a/manual/GNU_findutils/release/man1/updatedb.1 +++ b/manual/GNU_findutils/release/man1/updatedb.1 @@ -1,114 +1,117 @@ -.\" This file documents the GNU utilities for finding files that match -.\" certain criteria and performing various operations on them. +.\" -*- nroff -*- +.\"******************************************************************* .\" -.\" Copyright (C) 1994 Free Software Foundation, Inc. +.\" This file was generated with po4a. Translate the source file. .\" -.\" 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. +.\"******************************************************************* .\" -.\" 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. +.\" Translated Thu May 11 1997 +.\" by NAKANO Takeo +.\" Translated for 4.9.0, 2022/04/19 ribbon .\" -.\" 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. -.\" -.\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved. -.\" Translated Thu May 11 1997 by NAKANO Takeo -.\" -.TH UPDATEDB 1L \" -*- nroff -*- +.TH UPDATEDB 1 .SH 名前 -updatedb \- ファイル名データベースを更新する +updatedb \- ファイル名データベースの更新 .SH 書式 -.B updatedb [\fIoptions\fP] +\fBupdatedb [\fP\fIoptions\fP\fB]\fP +. .SH 説明 -このマニュアルページは GNU 版 -.BR updatedb -について記述したものである。 -.BR updatedb -は GNU 版 -.BR locate -で用いるファイル名データベースを更新するために用いられる。 -ファイル名データベースには、最後に更新された時点において、 -特定のディレクトリ以下に存在していたファイルのリスト情報が入っている。 -デフォルトのデータベースのファイル名は -\fBlocate\fP と \fBupdatedb\fP が設定・インストールされたときに決定される。 -データベースの更新頻度と、 -どのディレクトリの内容をデータベースにエントリとして追加するかは -\fBupdatedb\fP を実行させる頻度と実行時の引き数によって決まる。 -.PP -ネットワーク環境では、 -データベースをそれぞれのファイルシステムのルートに作成し、 -そこにそのファイルシステムのエントリを持たせるようにすると良い。 -そして各々のファイルシステムにおいては -.B updatedb -を (そのファイルシステムをローカルディスクに持っている) -ファイルサーバで実行するようにすれば、 -ネットワークの余分なトラフィックを防ぐことができる。 -ユーザーは \fBlocate\fP に検索させるデータベースを -環境変数やコマンドラインから指定できる -.RB ( locate (1L) -を見よ)。 -データベースを結合することはできない。 -.PP -ファイル名データベースのフォーマットは GNU 版 -.B find -および -.B locate -のバージョン 4.0 から変更され、 -バイトオーダーの違うマシン間でもデータベースを共有できるようになった。 -新しいバージョンの GNU 版 -.B locate -は古いデータベースを読むこともできるが、古いバージョンの -.B locate -や -.B find -に新しい形式のデータベースを読ませると正しくない結果が表示される。 +このマニュアルページは GNU 版 \fBupdatedb\fP の使用法を説明しています。 \fBupdatedb\fP は、 GNU 版 \fBlocate\fP +で用いるファイル名データベースを更新するために用いられます。 ファイル名データベースには、 これが更新された最終時点において、 +特定のディレクトリ以下に存在していたファイルの一覧が含まれます。 デフォルトのデータベースのファイル名は \fBlocate\fP と \fBupdatedb\fP +が設定、 インストールされたときに決定されます。 データベースの更新頻度と、 どのディレクトリの内容をデータベースにエントリとして追加するかは、 +\fBupdatedb\fP を実行させる頻度と実行時の引数によって決まります。 +.P +ネットワーク環境では、 データベースをそれぞれのファイルシステムのルートに作成して、 +そこにそのファイルシステムのエントリを持たせるようにするのが適切です。 そしてそれぞれのファイルシステムにおいては、 \fBupdatedb\fP を +(そのファイルシステムをローカルディスクに持っている) ファイルサーバーで実行するようにすれば、 ネットワークの余分なトラフィックを防ぐことができます。 +ユーザーは \fBlocate\fP に検索させるデータベースを、 環境変数やコマンドラインから指定できます。 \fBlocate\fP(1) を参照してください。 +データベースは結合することはできません。 +.P +GNU findutils バージョン 4.0 において、 データベースフォーマット \fBLOCATGE02\fP が導入されました。 +これはバイトオーダーが異なるマシン間において、 データベースの共有を可能とするためのものです。 GNU \fBlocate\fP は、 +従来の古いフォーマットと、 \fBLOCATE02\fP のフォーマットを、 いずれも読み込むことができます。 バージョン 4.0 までの古いフォーマットは、 +いずれ削除される予定です。 +. .SH オプション -.TP -.B \-\-localpaths='\fIpath1 path2...\fP' -データベースに取り込むネットワーク以外のディレクトリを指定する。 -デフォルトは /。 -.TP -.B \-\-netpaths='\fIpath1 path2...\fP' -データベースに取り込むネットワークディレクトリ -(NFS, AFS, RFS 等) を指定する。デフォルトではどこも取り込まない。 -.TP -.B \-\-prunepaths='\fIpath1 path2...\fP' -データベースに取り込まないディレクトリを明示的に指定する。 -デフォルトは /tmp /usr/tmp /var/tmp /afs。 -.TP -.B \-\-output=\fIdbfile\fP -作成するデータベースのファイル名を指定する。 -デフォルトはシステムによって異なるが、 -通常は /usr/local/var/locatedb のことが多い。 -.TP -.B \-\-netuser=\fIuser\fP -ネットワークディレクトリを検索するユーザーを指定する。 -\fBsu\fP(1) が利用される。 -デフォルトは \fBdaemon\fP。 -.TP -.B \-\-old\-format -作成するデータベースの形式として、 -現在の形式ではなく古い形式を用いる。 -.TP -.B \-\-version -.B updatedb -のバージョンを表示して終了する。 -.TP -.I "\-\-help" -.B updatedb -のオプションに関するまとめを表示して終了する。 +.TP +\fB\-\-findoptions='\fP\fI\-option1 \-option2...\fP\fB'\fP +\fBfind\fP に受け渡すグローバルオプションを指定します。 環境変数 \fBFINDOPTIONS\fP によりこの値を設定することもできます。 +デフォルトは未設定です。 +.TP +\fB\-\-localpaths='\fP\fIpath1 path2...\fP\fB'\fP +データベースに取り込むネットワーク以外のディレクトリを指定します。 デフォルトは / です。 +.TP +\fB\-\-netpaths='\fP\fIpath1 path2...\fP\fB'\fP +データベースに取り込むネットワークディレクトリ (NFS, AFS, RFS 等) を指定します。 デフォルトでは何も取り込みません。 +.TP +\fB\-\-prunepaths='\fP\fIpath1 path2...\fP\fB'\fP +データベースに取り込まないディレクトリを明示的に指定します。 指定しなかったものは、 逆に取り込まれるものとなります。 +パス名の最後のスラッシュは取り除いてください。 そうしないと \fBupdatedb\fP は、 取り除くべきパスとして判断しません (そのような指定は、 +正規表現パターンとして用いられるからです)。 環境変数 \fBPRUNEPATHS\fP によりこの値を設定することもできます。 デフォルトは /tmp +/usr/tmp /var/tmp /afs です。 +.TP +\fB\-\-prunefs='\fP\fIpath...\fP\fB'\fP +データベースに取り込まないファイルシステムを指定します。 指定しなかったものは逆に取り込まれるものとなります。 +なおファイルシステムが取り込まれた際には、 ファイルが削除されることに留意してください。 つまり予定していないファイルシステムのもとに、 +ファイルシステムがマウントされると、 それは無視されてしまうことに注意してください。 環境変数 \fBPRUNEFS\fP により、 +この値を設定することもできます。 デフォルトは \fInfs NFS proc\fP です。 +.TP +\fB\-\-output=\fP\fIdbfile\fP +作成するデータベースのファイル名を指定します。 デフォルトはシステムによって異なります。 Debian GNU/Linux の場合、 デフォルトは +/var/cache/locate/locatedb です。 +.TP +\fB\-\-localuser=\fP\fIuser\fP +ネットワーク以外のディレクトリを検索するユーザーを指定します。 その際には \fBsu\fP(1) が利用されます。 +ネットワーク以外のディレクトリ検索を行うのは、 デフォルトはカレントユーザーです。 環境変数 \fBLOCALUSER\fP を用いて、 +ユーザーを設定することもできます。 +.TP +\fB\-\-netuser=\fP\fIuser\fP +ネットワークディレクトリを検索するユーザーを指定します。 その際には \fBsu\fP(1) が利用されます。 デフォルトは \fBdaemon\fP です。 +環境変数 \fBNETUSER\fP を用いてユーザーを設定することもできます。 +.TP +\fB\-\-dbformat=F\fP +フォーマット F のデータベースを生成します。 デフォルトのフォーマットは LOCATE02 と呼ばれるものです。 この他に \fBslocate\fP +フォーマットもサポートされています。 \fBslocate\fP フォーマットが用いられた場合、 生成されるデータベースのセキュリティレベルは 1 です。 +システムワイドな \fBslocate\fP データベースを構築しようとする場合、 \fBupdatedb\fP の実行は root +により行う必要があるかもしれません。 +.TP +\fB\-\-version\fP +\fBupdatedb\fP のバージョンを表示して終了します。 +.TP +\fB\-\-help\fP +\fBupdatedb\fP のオプションに関する概要を表示して終了します。 +. +.SH バグ +\fBupdatedb\fP プログラムは、 ファイル名に改行文字が含まれていても正しく動作します。 ただしこれは、 システム上にある sort コマンドの +\fI\-z\fP オプションが適切に動作する場合に限ります。 \fBlocate\fP の返り値であるファイル名に改行文字が含まれていなければおかしい、 +と疑われる場合には、 \fI\-\-null\fP オプションの利用を検討してください。 +. +.SH バグ報告 +GNU findutils オンラインヘルプ: + +.br +翻訳に関するバグ報告 +.PP +その他の問題について GNU Savannah バグトラッカー経由での報告: +.RS + +.RE +GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: +.RS + +.RE +. +.SH 著作権 +Copyright \(co 1994\-2022 Free Software Foundation, Inc. License GPLv3+: GNU +GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. There is +NO WARRANTY, to the extent permitted by law. +. .SH 関連項目 -.BR find (1L), -.BR locate (1L), -.BR locatedb (5L), -.BR xargs (1L) +\fBfind\fP(1), \fBlocate\fP(1), \fBxargs\fP(1), \fBlocatedb\fP(5) +.PP +完全なドキュメント .br -.B Finding Files -(on-line in Info, or printed) - +またローカルにおいては \fBinfo updatedb\fP により参照できます。 diff --git a/manual/GNU_findutils/release/man1/xargs.1 b/manual/GNU_findutils/release/man1/xargs.1 index 497444e2..4735dd6b 100644 --- a/manual/GNU_findutils/release/man1/xargs.1 +++ b/manual/GNU_findutils/release/man1/xargs.1 @@ -4,24 +4,6 @@ .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.\" This file documents the GNU utilities for finding files that match -.\" certain criteria and performing various operations on them. -.\" -.\" Copyright (C) 1994 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. -.\" -.\" 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. .\" .\" Japanese Version Copyright (c) 1997 NAKANO Takeo .\" and 2011 Chonan Yoichi, @@ -32,413 +14,284 @@ .\" by Chonan Yoichi .\" Updated and modified (findutils-4.6.0) Sat Mar 3 11:18:22 JST 2018 .\" bu Chonan Yoichi +.\" Translated for 4.9.0, 2022/04/19 ribbon .\" .\"WORD end of file string ファイル終端文字列 .\" .TH XARGS 1 .SH 名前 -xargs \- 標準入力を読み込んでコマンドラインを作成し、それを実行する +xargs \- 標準入力を読み込んでコマンドラインを作成し実行する .SH 書式 \fBxargs\fP .nh -[\fB\-0prtx\fP] [\fB\-E \fP\fIeof\-str\fP] [\fB\-e\fP[\fIeof\-str\fP]] [\fB\-\-eof\fP[=\fIeof\-str\fP]] -[\fB\-\-null\fP] [\fB\-d \fP\fIdelimiter\fP] [\fB\-\-delimiter \fP\fIdelimiter\fP] -[\fB\-I \fP\fIreplace\-str\fP] [\fB\-i\fP[\fIreplace\-str\fP]] -[\fB\-\-replace\fP[=\fIreplace\-str\fP]] [\fB\-l\fP[\fImax\-lines\fP]] -[\fB\-L \fP\fImax\-lines\fP] [\fB\-\-max\-lines\fP[=\fImax\-lines\fP]] [\fB\-n \fP\fImax\-args\fP] -[\fB\-\-max\-args\fP=\fImax\-args\fP] [\fB\-s \fP\fImax\-chars\fP] -[\fB\-\-max\-chars\fP=\fImax\-chars\fP] [\fB\-P \fP\fImax\-procs\fP] -[\fB\-\-max\-procs\fP=\fImax\-procs\fP] [\fB\-\-process\-slot\-var\fP=\fIname\fP] -[\fB\-\-interactive\fP] [\fB\-\-verbose\fP] [\fB\-\-exit\fP] [\fB\-\-no\-run\-if\-empty\fP] -[\fB\-\-arg\-file\fP=\fIfile\fP] [\fB\-\-show\-limits\fP] [\fB\-\-version\fP] [\fB\-\-help\fP] -[\fIcommand\fP [\fIinitial\-arguments\fP]] -.PP -[\fB訳注\fP]: 見やすくするために、整理して単純化すると: -.PP -.B xargs -[\fIoptions\fR] -[\fIcommand\fR [\fIinitial-arguments\fR]] +[\fIoptions\fP] [\fIcommand\fP [\fIinitial\-arguments\fP]] .hy +. .SH 説明 -このマニュアルページは、GNU 版 \fBxargs\fP の使用法を説明している。 -\fBxargs\fP は、標準入力から空白や改行で区切られた一連の項目を読み込み -(空白はダブルクォート、シングルクォート、バックスラッシュによって保護できる)、 -それを引き数にして、指定した \fIcommand\fP を 1 回以上実行する -(デフォルトのコマンドは \fI/bin/echo\fP である)。このとき、ユーザが \fIcommand\fP -に対して指定した引き数 (上記書式の \fIinitial\-arguments\fP) があれば、 -標準入力から読み込んだ一連の項目は、その後ろに追加される。 -標準入力における空行は無視する。 +このマニュアルページは GNU 版 \fBxargs\fP の使用法を説明しています。 \fBxargs\fP は、 +標準入力から空白や改行で区切られた一連の項目を読み込み (空白はダブルクォート、 シングルクォート、 バックスラッシュによって保護できます)、 +これを引数にして、 指定した \fIcommand\fP を 1 回以上実行する (デフォルトのコマンドは \fIecho\fP です)。 このとき、 ユーザーが +\fIcommand\fP に対して指定した引数 (上記書式の \fIinitial\-arguments\fP) があれば、 標準入力から読み込んだ一連の項目は、 +その後ろに追加されます。 標準入力における空行は無視されます。 .P -\fIcommand\fP のコマンドラインは、(\fB\-n\fP や \fB\-L\fP オプションが使用されていない場合は) -システムが定めているコマンドラインの長さの限界に達するまで、長いものが作成される。 -そして、指定された \fIcommand\fP が、入力項目のリストを一つ残らず処理するのに必要な回数だけ、呼び出される。 -だから、おおむね、\fIcommand\fP が呼び出される回数は、入力項目の数よりも、ずっと少なくてすむわけだ。 -このことは、たいていの場合、パフォーマンスを著しく向上させることになる。 -なお、コマンドの中には、都合がよいことに、並列的に実行できるものもある。\fB\-P\fP -オプションを参照していただきたい。 +\fIcommand\fP のコマンドラインは、 (\fB\-n\fP や \fB\-L\fP オプションが使用されていない場合は) +システムが定めているコマンドラインの長さの限界に達するまで、 長いものが作成されます。 そして、 指定された \fIcommand\fP が、 +入力項目のリストを一つ残らず処理するのに必要な回数だけ、 呼び出されます。そのため、おおむね、 \fIcommand\fP +が呼び出される回数は、入力項目の数よりも、ずっと少なくてすむことになります。 +このことは、たいていの場合、パフォーマンスを著しく向上させることになります。 +なお、コマンドの中には、都合がよいことに、並列的に実行できるものもあります。\fB\-P\fP +オプションを参照してください。 .P -Unix ではファイル名に空白や改行を含むことが可能なので、 -こうしたデフォルトの動作は、しばしば問題を引き起こす。空白や改行を含むファイル名は、 -\fBxargs\fP によって適切に処理されないのだ。そうした状況では、\fB\-0\fP -オプションを使用した方がよい。そうすれば、その手の問題を回避することができる。 -なお、\fB\-0\fP オプションを使う場合は、\fBxargs\fP -の入力を生成するプログラムの方でも、区切りの指標に必ずヌル文字を使うようにする必要がある。 -たとえば、そのプログラムが GNU \fBfind\fP ならば、\fB\-print0\fP オプションでそれが可能だ。 +Unix では、 ファイル名に空白や改行を含むことが可能なので、 こうしたデフォルトの動作は、 しばしば問題となります。 空白や改行を含むファイル名は、 +\fBxargs\fP によって適切に処理されません。 このような状況では、 \fB\-0\fP オプションの利用をお勧めします。 これを用いれば問題を回避できます。 +なお、 \fB\-0\fP オプションを使う場合は、 \fBxargs\fP の入力を生成するプログラム側でも、 区切り文字にヌル文字を使うようにする必要があります。 +たとえば GNU \fBfind\fP を使う場合ば、 \fB\-print0\fP オプションを用いることになります。 .P -指定したコマンドの実行が終了ステータス 255 で終了することがあれば、 -\fBxargs\fP は即座に停止して、それ以上入力を読み込まない。 -また、このとき、エラーメッセージを標準エラーに表示する。 +指定したコマンドの実行が、 終了ステータス 255 で終了すると、 \fBxargs\fP は即座に停止して、 それ以上入力を読み込みません。 +このときには、 エラーメッセージを標準エラーに出力します。 +. .SH オプション .TP -.PD \fB\-0, \-\-null\fP -入力される一連の項目が、ホワイトスペース (空白や改行) ではなく、ヌル文字によって区切られることになる。 -また、引用符やバックスラッシュが特別な意味を持たなくなる -(すなわち、あらゆる文字が文字通りに解釈される)。後述のファイル終端文字列も無効になり、 -(\fBxargs\fP が作成するコマンドラインにおいて) 他の引き数と同じように扱われる。 -このオプションは、入力される項目にホワイトスペース、引用符、バックスラッシュなどが含まれる可能性がある場合に、役に立つ。 -GNU \fBfind\fP の \fB\-print0\fP オプションが生成する出力は、このモードに対応した入力になる。 +入力される項目が、 ホワイトスペース (空白や改行) ではなく、 ヌル文字によって区切られます。 また、 クォートやバックスラッシュは、 +特別な扱いをしません (つまり、 すべての文字がそのままに解釈されます)。 ファイル終端文字列は無効になり、 他の引数と同じように扱われます。 +このオプションは、 入力される項目にホワイトスペース、 クォート、 バックスラッシュなどが含まれる可能性がある場合に、 役に立ちます。 GNU +\fBfind\fP の \fB\-print0\fP オプションは、 このモードに適した入力を生成します。 .TP -.PD \fB\-a \fP\fIfile\fP\fB, \-\-arg\-file=\fP\fIfile\fP -一連の項目を標準入力からではなく、\fIfile\fP から読み込む。 -デフォルトでは、指定したコマンドが実行される際に、標準入力が \fI/dev/null\fP -に付け換えられるが、このオプションを使用した場合は、標準入力の付け換えが起こらない -(訳注: 別の言い方をすると、指定したコマンドの実行中、デフォルトでは標準入力が使えなくなるので、たとえば、"rm \-i" -の出すプロンプトに応答できなくなるが、このオプションを使用した場合は、標準入力が使えるので、応答できるということ)。 +入力項目を、 標準入力からではなく \fIfile\fP から読み込みます。 デフォルトでは、 指定したコマンドが実行される際に、 標準入力が +\fI/dev/null\fP に付け換えられますが、 このオプションを使用した場合は、 標準入力の付け換えが起こりません。 .TP -.PD \fB\-\-delimiter=\fP\fIdelim\fP\fB, \-d\fP\fI delim\fP -入力される一連の項目が、指定された文字によって区切られることになる。 -指定される区切り文字は、単一の文字でもよく、\fB\en\fP のような -C 言語式のエスケープ文字でも、8 進数や 16 進数のエスケープコードでもよい。 -8 進数や 16 進数のエスケープコードは、\fBprintf\fP コマンドの場合と同様に解釈される。 -マルチバイト文字には対応していない。入力を処理する際、引用符やバックスラッシュは特別扱いされない。 -すなわち、入力中のあらゆる文字が、文字通りに解釈される。 -\fB\-d\fP オプションを指定すると、ファイル終端文字列は無効になり、(\fBxargs\fP -が作成するコマンドラインにおいて) 他の引き数と同じように扱われる。 -入力が、項目を改行で区切っているだけのような単純な構成の場合には、 -このオプションを使ってもよいが、ほとんどたいていの場合、なるべくなら、\fBxargs\fP の -\fB\-\-null\fP を使うように、出力側のプログラムを組み立てる方が望ましい。 +入力される一連の項目が、 指定された文字によって区切られることになります。 +指定される区切り文字は、 単一の文字でもよく、 \fB\en\fP のような +C 言語式のエスケープ文字でも、 8 進数や 16 進数のエスケープコードでもかまいません。 +8 進数や 16 進数のエスケープコードは、 \fBprintf\fP コマンドの場合と同様に解釈されます。 +マルチバイト文字には対応していません。 +入力を処理する際、 クォートやバックスラッシュは特別扱いされません。 +すなわち、 入力中のあらゆる文字が、 文字通りに解釈されます。 +\fB\-d\fP オプションを指定すると、 ファイル終端文字列は無効になり、 (\fBxargs\fP +が作成するコマンドラインにおいて) 他の引数と同じように扱われます。 +入力が、 項目を改行で区切っているだけのような単純な構成の場合には、 +このオプションを使ってもよいですが、 ほとんどの場合、 なるべくなら、 \fBxargs\fP の +\fB\-\-null\fP を使うように、 出力側のプログラムを組み立てる方がよいです。 .TP \fB\-E\fP\fI eof\-str\fP -\fIeof\-str\fP をファイル終端文字列として設定する。 -ファイル終端文字列が入力中の 1 行として現れると、それ以後の入力は無視される。 -\fB\-E\fP も \fB\-e\fP も指定しない場合、ファイル終端文字列は使用されない。 -(訳注: 原文には「入力中の 1 行として現れると -(occurs as a line of input)」とあるが、実際の動作は「入力中に独立した -1 項目として現れると、それ以後の入力は無視される」のようだ。) +\fIeof\-str\fP をファイル終端文字列として設定します。 ファイル終端文字列が入力中の 1 行として現れると、 それ以後の入力は無視されます。 +\fB\-E\fP も \fB\-e\fP も指定しない場合、 ファイル終端文字列は使用されません。 .TP -.PD \fB\-e\fP[\fIeof\-str\fP], \fB\-\-eof\fP[\fI=eof\-str\fP] -このオプションは \fB\-E\fP オプションの同義語である。\fB\-E\fP の方を使っていただきたい。 -理由は、そちらが POSIX に準拠しているのに対して、こちらは準拠していないからだ。 -\fIeof\-str\fP の部分が省略されると、ファイル終端文字列が存在しないことになる。 -\fB\-E\fP も \fB\-e\fP も指定しない場合、ファイル終端文字列は使用されない。 +このオプションは \fB\-E\fP オプションの同義語です。\fB\-E\fP の方を使ってください。 +理由は、 そちらが POSIX に準拠しているのに対して、 こちらは準拠していないからです。 +\fIeof\-str\fP の部分が省略されると、 ファイル終端文字列が存在しないことになります。 +\fB\-E\fP も \fB\-e\fP も指定しない場合、 ファイル終端文字列は使用されません。 .TP \fB\-I\fP\fI replace\-str\fP -\fIinitial\-arguments\fP 中で文字列 \fIreplace\-str\fP -が現れるすべての箇所を、標準入力から読み込んだ名前で置き換える。 -なお、標準入力中にクォートされていない空白があっても、それは入力項目の区切りにはならない。 -区切りの指標は改行文字だけになるのだ。\fB\-x\fP と \fB\-L\fP 1 が自動的に設定される。 -.RS -.IP "[\fB訳注\fP]:" 8 -もう少し詳しく説明した方がよいだろう。普通、ユーザが \fBxargs\fP -で実行するコマンドに引き数 (それが \fIinitial-arguments\fP である。上記書式を参照) -を指定した場合、標準入力から読み込まれた項目群は、\fIinitial-arguments\fP -の後ろにどんどん追加されて行く。それに対して、\fB\-I\fP \fIreplace-str\fP -オプションを使用した場合は、次の二点が異なっている。 -一つは、標準入力は改行で分割され、その 1 行 1 行が、コマンド 1 回の実行につき -1 個づつ使用されること (それが \fB\-L\fP 1 ということだ)。 -もう一つは、その 1 行が 1 項目として扱われ (\fB\-L\fP 1 -を単独で使った場合とは、そこが違う)、その 1 項目が、\fIinitial-arguments\fP -の後ろに追加されるのではなく、\fIinitial-arguments\fP 中の文字列 -\fIreplace-str\fP が現れるすべての位置に埋め込まれることだ。以下の例では、 -\(dq{}\(dq が \fIreplace-str\fP であり、\(dq{} is {}\(dq の部分がコマンド -\fBecho\fP に対する \fIinitial-arguments\fP である。\fB\-I\fP -の直後の空白は、あってもなくてもよく、\fIreplace-str\fP は -\(dq{}\(dq 以外の文字列でもよい。なお \(dq{}\(dq はクォートした方がよいかもしれない。 - -.nf -$ echo -e "AAA BBB\\nCCC\\nDDD" |xargs -I{} echo {} is {} -AAA BBB is AAA BBB -CCC is CCC -DDD is DDD -.fi - -入力項目を区切っているデリミタは改行だけであり、空白は項目の区切りとして機能していないのがお分かりになるだろう。 -別の言い方をすると、\fB\-I\fP では、各行は 1 行全体が事実上クォートされてコマンドに渡される -(注意: \fB\-L\fP 1 にそんな作用はない)。 -従って、\fB\-I\fP オプションを使えば、空白を含むファイル名を処理できるということになる。 -たとえば、カレントディレクトリに \(dqnospace\(dq と \(dqhave space\(dq -というファイルがあるとしよう。 - -.nf -$ ls |xargs file -have: cannot open `have' (No such file or directory) -space: cannot open `space' (No such file or directory) -nospace: ASCII text -$ ls |xargs -L1 file -have: cannot open `have' (No such file or directory) -space: cannot open `space' (No such file or directory) -nospace: ASCII text -$ ls |xargs -I{} file {} -have space: UTF-8 Unicode text -nospace: ASCII text -.fi -.RE +\fIinitial\-arguments\fP 中で文字列 \fIreplace\-str\fP が現れるすべての箇所を、 標準入力から読み込んだ名前で置き換えます。 +なお、 標準入力中にクォートされていない空白があっても、 それは入力項目の区切りにはなりません。 区切り文字は改行文字だけになります。 \fB\-x\fP と +\fB\-L\fP 1 の指定を暗に含みます。 .TP -.PD \fB\-i\fP[\fIreplace\-str\fP], \fB\-\-replace\fP[\fI=replace\-str\fP] -このオプションは、 \fIreplace\-str\fP が指定されていれば、\fB\-I\fP\fIreplace\-str\fP -の同義語である。引き数 \fIreplace\-str\fP が省略されていれば、\fB\-I\fP{} と同じことになる。 -このオプションは非推奨である。\fB\-I\fP を使った方がよい。 +このオプションは、 \fIreplace\-str\fP が指定されていれば、 \fB\-I\fP\fIreplace\-str\fP の同義である。引数 +\fIreplace\-str\fP が省略されていれば、 \fB\-I\fP{} と同じことになります。 このオプションは非推奨です。\fB\-I\fP を使ってください。 .TP \fB\-L\fP\fI max\-lines\fP -1 コマンドラインにつき最大 \fImax\-lines\fP 行の (空行ではない) 入力行を使用する。 -入力行の行末に空白文字が付いていると、その行は次の入力行に論理的に続いていることになる。 -自動的に \fB\-x\fP が指定される。 -.RS -.IP "[\fB訳注\fP]:" 8 -\fB\-n\fP オプションとの違いに注意。 -「行末に空白文字」云々については、以下の 3 番目の例を他のものと比較していただきたい。 -コマンドの実行回数がわかるように、\fBecho\fP に \fIinitial-argument\fP -を付けてみた (代わりに \fB\-t\fP オプションを使ってもよかったかもしれない)。 -なお、デリミタをヌル文字にしたときや、\fB\-\-delimiter\fP -で指定したときの動作がどうなるかは、ご自分で試してみていただきたい。 - -.nf -$ echo AAA BBB CCC |xargs -L1 echo "line: " -line: AAA BBB CCC -$ echo -e "AAA\\nBBB\\nCCC" |xargs -L1 echo "line: " -line: AAA -line: BBB -line: CCC -$ echo -e "AAA \\nBBB\\nCCC" |xargs -L1 echo "line: " -line: AAA BBB -line: CCC -.fi -.RE +1 コマンド行につき最大 \fImax\-lines\fP 行の (空行ではない) 入力行を使用します。 入力行の行末に空白文字が付いていると、 +その行は次の入力行に論理的に続いていることになります。 \fB\-x\fP の指定を暗に含みます。 .TP -.PD \fB\-l\fP[\fImax\-lines\fP], \fB\-\-max\-lines\fP[=\fImax\-lines\fP] -\fB\-L\fP オプションの同義語である。\fB\-L\fP とは違って、\fImax\-lines\fP -という引き数を指定するかどうかは任意である。引き数 \fImax\-lines\fP -を指定しなかった場合は、デフォルトの 1 が使用される。POSIX 規格では -\fB\-L\fP の方を使うことになっているので、\fB\-l\fP オプションの使用はお勧めできない。 +\fB\-L\fP オプションの同義語です。\fB\-L\fP とは違って、 \fImax\-lines\fP +という引数を指定するかどうかは任意です。引数 \fImax\-lines\fP +を指定しなかった場合は、 デフォルトの 1 が使用されます。POSIX 規格では +\fB\-L\fP の方を使うことになっているので、 \fB\-l\fP オプションの使用はお勧めできません。 .TP -.PD \fB\-n\fP\fI max\-args\fP\fB, \fP\fB\-\-max\-args\fP=\fImax\-args\fP -1 コマンドラインにつき最大 \fImax\-args\fP 個の引き数を使用する。 -作成されたコマンドラインが、コマンドライン長の上限を超過する場合は -(\fB\-s\fP オプション参照)、\fImax\-args\fP より少ない引き数が使用されることになる。 -ただし、\fB\-x\fP オプションが指定されているときは別で、その場合は \fBxargs\fP が終了する。 +1 コマンド行につき最大 \fImax\-args\fP 個の引数を使用します。 +作成されたコマンドラインが、 コマンドライン長の上限を超過する場合は +(\fB\-s\fP オプション参照)、 \fImax\-args\fP より少ない引数が使用されることになります。 +ただし、 \fB\-x\fP オプションが指定されているときは別で、 その場合は \fBxargs\fP が終了します。 .TP -.PD \fB\-P\fP\fI max\-procs\fP, \fB\-\-max\-procs\fP=\fImax\-procs\fP -同時に実行するプロセスの最大数を \fImax\-procs\fP にする。デフォルトは 1 である。 -\fImax\-procs\fP が 0 だと、\fBxargs\fP はできるだけ多くのプロセスを同時に実行しようとする。 -\fB\-P\fP オプションには、\fB\-n\fP か \fB\-L\fP オプションを併せて使用するべきだ。 -さもないと、おそらく exec 関数がたった一回しか実行されないことになるだろう。 -\fBxargs\fP の実行中に、そのプロセスに SIGUSR1 シグナルを送れば、同時に実行するコマンドの数を増やすことができる。 -また、SIGUSR2 シグナルを送れば、その数を減らすことができる。 -ただし、実装が決めている上限を越えて増やすことはできないし -(上限は \fI\-\-show\-limits\fP を使えば、知ることができる)、1 より少なくすることもできない。 -\fBxargs\fP は、実行しているコマンドを終了させるわけではない。 -実行数を減らすように命じられたときは、単に現在動いているコマンドが二つ以上終了するのを待ち、 -それから別のコマンドを開始するのである。 +同時に実行するプロセスの最大数を \fImax\-procs\fP にします。 デフォルトは 1 です。 \fImax\-procs\fP が 0 ですと、 +\fBxargs\fP はできるだけ多くのプロセスを同時に実行しようとします。 \fB\-P\fP オプションには、 \fB\-n\fP か \fB\-L\fP +オプションを併せて使用するべきです。そうしないと、 おそらく exec 関数がたった一回しか実行されないことになります。 \fBxargs\fP の実行中に、 +そのプロセスに SIGUSR1 シグナルを送れば、 同時に実行するコマンドの数を増やすことができます。 また、 SIGUSR2 シグナルを送れば、 +その数を減らすことができます。 ただし、 実装が決めている上限を越えて増やすことはできませんし (上限は \fI\-\-show\-limits\fP +を使えばわかります)、 1 より少なくもできません。 \fBxargs\fP は、 実行しているコマンドを終了させるわけではありません。 +実行数を減らすように命じられたときは、 単に現在実行中のコマンドが二つ以上終了するのを待ち、 それから別のコマンドを開始します。 -注意していただきたいが、共有リソースに対する並列アクセスをきちんと管理するのは、呼び出されるプロセス側の問題だ。 -たとえば、複数のプロセスが標準出力に書き出そうとした場合、出力は不定の順番で生成されることになる -(だから,混じり合ってしまう可能性が高い)。そうならないためには、プロセス同士が何らかの形で協力し合う必要がある。 -ロッキング・スキームのようなものを使うのは、そうした問題を避けるための一方法である。 -ただ、一般に、ロッキング・スキームの使用は、適切な出力を保証してはくれるものの、パフォーマンスを低下させることになる。 -パフォーマンスが落ちるのが嫌ならば、単純に各プロセスがそれぞれ別の出力ファイルを作るように -(あるいは、別のリソースを使うように) すればよい。 +注意してほしいのは、 共有リソースに対する並列アクセスをきちんと管理するのは、 呼び出されるプロセス側の問題であるということです。 たとえば、 +複数のプロセスが標準出力に書き出そうとした場合、 出力順は不定です (そして混じり合ってしまうことが多い)。 そうならないためには、 +プロセス同士が何らかの形で協力し合う必要があります。 ロックスキーム (locking scheme) のようなものを使うのは、 +そうした問題を避けるための一方法です。 ただ一般にロックスキームを使っても、 出力順は適切に保証してくれるものの、 パフォーマンスは低下します。 +パフォーマンスが落ちるのが嫌ならば、 単純に各プロセスがそれぞれ別の出力ファイルを作るように (あるいは別のリソースを使うように) すればよいでしょう。 +.TP +\fB\-o, \-\-open\-tty\fP +コマンド実行に先がけて、 子プロセスにおいて stdin を \fI/dev/tty\fP として再オープンします。これは \fBxargs\fP +を使って対話型アプリケーションを実行する場合に有用です。 .TP -.PD \fB\-p, \-\-interactive\fP -コマンドライン 1 行ごとに、実行するかどうかをユーザに尋ねるプロンプトを出し、端末から -1 行読み込む。コマンドラインを実行するのは、 -返答が `y' または `Y' で 始まるときだけである。自動的に \fB\-t\fP が指定される。 +コマンド行 1 行ごとに、 実行するかどうかをユーザーに尋ねるプロンプトを出し、 端末から 1 行読み込みます。コマンド行を実行するのは、 返答が +`y' または `Y' で 始まるときだけです。自動的に \fB\-t\fP が指定されます。 .TP -.PD \fB\-\-process\-slot\-var\fP=\fIname\fP -複数の子プロセスを同時実行しているとき、その各子プロセスで環境変数 \fIname\fP -にユニークな値をセットする。値は、子プロセスが終了すると、再利用される。 -この機能は、たとえば、初歩的な負荷分散スキームで利用できる。 +複数の子プロセスを同時実行しているとき、 その各子プロセスで環境変数 \fIname\fP にユニークな値をセットします。値は、 子プロセスが終了すると、 +再利用されます。この機能は、 たとえば、 初歩的な負荷分散スキームで利用できます。 .TP -.PD \fB\-r, \-\-no\-run\-if\-empty\fP -標準入力に空白しか含まれていない場合は、指定したコマンドを実行しない。 -通常では、入力が全くない場合でも、コマンドが一回は実行されるのである。 -このオプションは GNU の拡張である。 +標準入力に空白しか含まれていない場合は、 指定したコマンドを実行しません。 通常では、 入力が全くない場合でも、 コマンドが一回は実行されます。 +このオプションは GNU 拡張です。 .TP -.PD \fB\-s\fP\fI max\-chars\fP, \fB\-\-max\-chars\fP\fI=max\-chars\fP -1 コマンドラインにつき最大 \fImax\-chars\fP の文字を使用する。 -この文字数には、指定したコマンドと \fIinitial\-arguments\fP、それに各引き数文字列の終端を示すヌル文字も含まれる。 -指定できる値の上限は、システム次第であり、exec 関数に対する引き数の最大長から、現在の環境のサイズと -2048 バイトの余裕領域を引いたものである。もしその値が 128KiB -以上だったときは、デフォルトの値には 128KiB が使用される。 -128KiB 未満のときは、算出された上限がデフォルトの値になる。 -1KiB は 1024 バイトである。制限がより厳しい場合でも、\fBxarg\fP は自動的にそれに対応する。 +1 コマンド行につき最大 \fImax\-chars\fP の文字を使用します。 この文字数には、 指定したコマンドと +\fIinitial\-arguments\fP、 それに各引数文字列の終端を示すヌル文字も含まれます。 指定できる値の上限は、 システム次第であり、 exec +関数に対する引数の最大長から、 現在の環境のサイズと 2048 バイトの余裕領域を引いたものです。もしその値が 128KiB 以上だったときは、 +デフォルトの値には 128KiB が使用されます。 128KiB 未満のときは、 算出された上限がデフォルトの値になります。 1KiB は 1024 +バイトです。制限がより厳しい場合でも、 \fBxarg\fP は自動的にそれに対応します。 .TP \fB\-\-show\-limits\fP -コマンドライン長の上限を表示する。コマンドライン長の上限は、 -オペレーティングシステム、\fBxargs\fP が設定したバッファサイズ、それに \fB\-s\fP -オプションによって決まる。\fBxargs\fP にコマンドライン長の上限の表示以外をさせたくなかったら、 -入力を \fI/dev/null\fP からパイプで \fBxargs\fP に渡してやればよい -(さらに \fB\-\-no\-run\-if\-empty\fP を指定した方がよいかもしれない)。 +コマンド行の長さの上限を表示します。コマンド行長の上限は、 オペレーティングシステム、 \fBxargs\fP が設定したバッファサイズ、 それに \fB\-s\fP +オプションによって決まります。\fBxargs\fP にコマンドライン長の上限の表示以外をさせたくない場合は、 入力を \fI/dev/null\fP からパイプで +\fBxargs\fP に渡してください (さらに \fB\-\-no\-run\-if\-empty\fP を指定した方がよいかもしれません)。 .TP \fB\-t, \-\-verbose\fP -実行する前に、コマンドラインを標準エラー出力に表示する。 +実行する前に、 コマンドラインを標準エラー出力に表示します。 .TP -.PD \fB\-x, \-\-exit\fP -作成されたコマンドラインがコマンドライン長の上限を超過していたら (\fB\-s\fP オプションを参照)、終了する。 +作成されたコマンド行がコマンド行長の上限を超過していたら (\fB\-s\fP オプションを参照)、 終了します。 .TP \fB\-\-help\fP -\fBxargs\fP のオプションについて簡単に説明し終了する。 +\fBxargs\fP のオプションについて簡単に説明し終了します。 .TP \fB\-\-version\fP -\fBxargs\fP のバージョン番号を表示して、終了する。 -.SH 用例 +\fBxargs\fP のバージョン番号を表示して、 終了します。 +.PP +オプション \fB\-\-max\-lines\fP (\fB\-L\fP, \fB\-l\fP)、 \fB\-\-replace\fP (\fB\-I\fP, \fB\-i\fP)、 +\fB\-\-max\-args\fP (\fB\-n\fP) は同時に指定することはできません。これらを同時に指定した場合、 通常 \fBxargs\fP は、 +コマンド行上の最後に指定されたオプションを利用します。つまり誤って指定された (最終分よりも前に指定された) +オプション値はデフォルトにリセットされます。さらに \fBxargs\fP は警告情報を \fIstderr\fP に出力します。この仕様には例外があり、 +\fImax\-args\fP に対して特別な値 \fI1\fP ('\fB\-n\fP\fI1\fP') を指定した場合、 \fB\-\-replace\fP +オプションおよびその別名である \fB\-I\fP と \fB\-i\fP の後ろであれば、 \fImax\-args\fP +は無視されます。これは相反する指定にならないからです。 + +. +.SH 例 .nf \fBfind /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP .fi -\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを捜して、それを消去する。 -改行や空白を含むファイル名があると、正しく動作しないので、注意すること。 +\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを探して、 それを消去します。 改行や空白を含むファイル名があると、 +正しく動作しないので、注意してください。 .P \fBfind /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP -.fi -\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを捜して、それを消去する。 -ファイル名の処理に当たっては、ファイル名やディレクトリ名に空白や改行が含まれていても、適切に扱われるようにしている。 +\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを探して、 それを消去します。 ファイル名の処理に当たっては、 +ファイル名やディレクトリ名に空白や改行が含まれていても、 適切に扱われるようにしています。 .P \fBfind /tmp \-depth \-name core \-type f \-delete\fP -.fi -\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを捜して、それを消去する。 -上の例よりもこちらの方が効率的である (なぜなら、 \fBrm\fP を実行するために -\fBfork\fP(2) と \fBexec\fP(2) を使わないですむし、そもそも、 \fBxargs\fP -のプロセスを必要としないから)。 +\fB/tmp\fP ディレクトリ以下に \fBcore\fP という名前のファイルを探して、 それを消去します。 +上の例よりもこちらの方が効率的です (なぜなら、 \fBrm\fP を実行するために +\fBfork\fP(2) と \fBexec\fP(2) を使わないですみますし、 そもそも、 \fBxargs\fP +のプロセスを必要としないからです)。 .P .nf \fBcut \-d: \-f1 < /etc/passwd | sort | xargs echo\fP .fi -システムの全ユーザを列挙した簡潔なリストを生成する -(訳注: 要するに、改行ではなく、空白で区切られたユーザ名のリストを作るということ)。 - -.P -.nf -\fBxargs sh \-c 'emacs "$@" < /dev/tty' emacs\fP - -.fi -\fBxargs\fP の標準入力からファイルのリストを受け取り、Emacs -を必要なだけ次々と実行して、ファイルを編集する。この例は BSD の \fB\-o\fP -オプションと同じことを実現するが、こちらの方が柔軟性があり、多くのシステムで利用できる。 - - - +システムの全ユーザーを列挙した簡潔なリストを生成します。 +. .SH 終了ステータス -\fBxargs\fP の終了ステータスは以下のとおりである。 -.nf -0 成功した。 -123 指定したコマンドの実行が 1\-125 のステータスで終了した。 -124 指定したコマンドが 255 のステータスで終了した。 -125 指定したコマンドがシグナルによって kill された。 -126 指定したコマンドが実行できない。 -127 指定したコマンドが見つからない。 -1 上記以外のエラーが起きた。 -.fi +\fBxargs\fP の終了ステータスは以下のとおりです。 +.RS +.IP 0 +成功した。 +.IP 123 +指定したコマンドの実行が 1\-125 のステータスで終了した。 +.IP 124 +指定したコマンドが 255 のステータスで終了した。 +.IP 125 +指定したコマンドがシグナルによって kill された。 +.IP 126 +指定したコマンドが実行できない。 +.IP 127 +指定したコマンドが見つからない。 +.IP 1 +上記以外のエラーが起きた。 +.RE + .P -128 以上の終了ステータスは、致命的なシグナルのせいでプログラムが止まったことを示すために、シェルが使用している。 +128 以上の終了ステータスは、 致命的なシグナルのせいでプログラムが止まったことを示すために、 シェルが使用しています。 +. .SH 規格への準拠 -GNU xargs version 4.2.9 以来、ファイルの論理的な終端を示す指標 -(a logical end\-of\-file marker) を持たないのが、\fBxargs\fP -のデフォルトになっている。このことは POSIX (IEEE Std 1003.1, 2004 Edition) -で認められている。 +GNU xargs version 4.2.9 以来、 ファイルの論理的な終端を示す指標 +(a logical end\-of\-file marker) を持たないのが、 \fBxargs\fP +のデフォルトになっています。このことは POSIX (IEEE Std 1003.1, 2004 Edition) +で認められています。 .P -\-l や \-i オプションは 1997 年版の POSIX 規格には存在するが、 -2004 年版の POSIX 規格には存在しない。従って、それぞれ \-L や \-I の方を使うべきである。 +\-l や \-i オプションは 1997 年版の POSIX 規格には存在するが、 2004 年版の POSIX 規格には存在しません。従って、 それぞれ +\-L や \-I の方を使うべきです。 .P -POSIX 規格は、実装に当たって、\fBexec\fP 関数に対する引き数のサイズに上限を設けることを認めている。 -そして、その上限は、環境のサイズも含めて、少なくとも 4096 バイトあればよいことになっている。 -移植性のあるスクリプトを書こうと思ったら、これより大きいサイズを当てにしてはいけない。 -もっとも、実際の上限がそんなに小さい実装に、筆者は出会ったことがないけれど。 -\fB\-\-show\-limits\fP オプションを使えば、使用中のシステムで有効な実際の上限を知ることができる。 - - -.SH 関連項目 -\fBfind\fP(1), \fBlocate\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1), \fBfork\fP(2), -\fBexecvp\fP(3), \fBkill\fP(1), \fBsignal\fP(7), - -\fBxargs\fP については、充実した関連文書が Texinfo マニュアルの形で保守されている。 -\fBinfo\fP と \fBxargs\fP プログラムが、御使用のサイトできちんとインストールされているならば、 -\fBinfo xargs\fP とコマンドを打ち込むことで、詳細なマニュアルが読めるはずだ。 - -.SH バグ -\fB\-L\fP オプションと \fB\-I\fP オプションを組み合わせても、うまく行かない。 -組み合わせて使えた方がよいのかもしれないが。 -.IP "[\fB訳注\fP]:" 8 -\fB\-I\fP オプションの説明にあるように、\fB\-I\fP \fIreplace\-str\fP を指定すると、 -\fB\-L\fP 1 が自動的に設定される。だから、ここで言っているのは、現状では -\fB\-L\fP 2 や \fB\-L\fP 3 を \fB\-I\fP -と一緒に使っても、期待する結果は得られないということだろう。 +\-o オプションは POSIX 規格を拡張したものであり、 BSD と互換性を図るためのものです。 .P -\fBxargs\fP を安全に使うことは不可能である。なぜなら、入力されるファイル名のリストを生成する時間と \fBxargs\fP -が実行するコマンドがそれを使用する時間との間には、必ず時間差があるからだ。 -もし、他のユーザがシステムにアクセスすることができれば、 -そのユーザはこの時間の隙間にファイルシステムを操作して、\fBxargs\fP -が実行するコマンドの動作を、こちらが意図していないファイルに無理矢理向けることができる。 -この問題や、これに関連する問題については、 -findutils に含まれる Texinfo 文書の「Security Considerations」という章でもっと細かく論じているので、 -そちらを参照していただきたい。なお、\fBfind\fP の \fB\-execdir\fP -オプションは、より安全な方法として \fBxargs\fP の代わりに使用できることが多い。 +POSIX 規格は、 実装に当たって、 \fBexec\fP 関数に対する引数のサイズに上限を設けることを認めています。 +そして、 その上限は、 環境のサイズも含めて、 少なくとも 4096 バイトあればよいことになっています。 +移植性のあるスクリプトを書こうと思ったら、 これより大きいサイズを当てにしてはいけません。 +もっとも、 実際の上限がそんなに小さい実装に、 筆者は出会ったことはありません。 +\fB\-\-show\-limits\fP オプションを使えば、 使用中のシステムで有効な実際の上限を知ることができます。 +. +.SH バグ +\fBxargs\fP を安全に使うことはできません。 なぜなら、 入力ファイルの一覧を作成する時間と、 \fBxargs\fP +からの実行コマンドがその一覧を使用する時間との間に、 必ず差が発生するためです。 仮に、 他のユーザーがすでにシステムにアクセスしていたとして、 +そのユーザーが、 その一瞬の隙にファイルシステムを操作して、 \fBxargs\fP が実行するコマンドの動作を、 +こちらが意図していないファイルに無理矢理向けてしまう、 といったことができてしまいます。この議論や、 これに関連する問題については、 findutils +に含まれる Texinfo 文書の「Security Considerations」という章でもっと細かく述べているので、 参照してください。 なお、 +\fBfind\fP の \fB\-execdir\fP オプションは、 より安全な方法として \fBxargs\fP の代わりに利用されることがよくあります。 -\fB\-I\fP オプションを使うと、標準入力から読み込まれた各行が内部的にバッファされる。 -それは、\fB\-I\fP オプションを付けて使ったとき、\fBxargs\fP が受け入れる入力行 -1 行の長さに上限があるということだ。この制限を回避するには、\fB\-s\fP -オプションを使って、\fBxargs\fP が使用するバッファ空間のサイズを増やしてやればよい。 -さらに、\fBxargs\fP をもう一つ実行すれば、長すぎる行の出現を確実に避けることができる。たとえば、 +\fB\-I\fP オプションを使うと、 標準入力から読み込まれた各行が、 内部的にバッファに保存されます。 つまり、 \fB\-I\fP オプションをつけたときに、 +\fBxargs\fP が受けつける入力 1 行には、 長さの上限があるということです。 この制限を回避するには、 \fB\-s\fP オプションを使って、 +\fBxargs\fP が使用するバッファ領域のサイズを増やして対処します。 もう 1 つの \fBxargs\fP を追加で実行すれば、 +極端に長い行が発生しないようにできます。たとえば以下です。 .P \fBsomecommand | xargs \-s 50000 echo | xargs \-I '{}' \-s 100000 rm '{}'\fP .P -この例では、\fBxargs\fP の最初の実行には、入力行の長さの上限がない。 -\fB\-I\fP オプションを使っていないからである。 -\fBxargs\fP の二番目の実行には、そうした上限があるが、処理できる以上の長さの行に絶対に出会わないようになっている。 -これが理想的な解決法だというのではない。むしろ、 \fB\-I\fP オプションによって入力行の長さに上限ができない方がよいのであり、 -だからこそ、この問題を「バグ」セクションで論じているのである。 -なお、この問題は \fBfind\fP(1) の出力では起きない。\fBfind\fP は 1 行に -1 ファイル名しか出力しないからだ。 -.P -バグ報告の最善の方法は、http://savannah.gnu.org/bugs/?group=findutils -にある書式を使用することである。そうすれば、問題解決の進行状態を追うことができるからだ。 -\fBxargs\fP(1) や findutils パッケージ全般についてのその他のご意見は、 -\fIbug\-findutils\fP メーリングリストにお出しになればよい。 -メーリングリストに参加するには、\fIbug\-findutils\-request@gnu.org\fP 宛に -E メールを送っていただきたい。 -.SH 翻訳について -この翻訳は findutils-4.6.0 所収の xargs.1 の翻訳である。 -お手元の findutils は、もっと新しいバージョン、たとえば 4.7.0-git -になっているかもしれない。だが、4.7.0 は開発中の版なので、manpage -も変化し続けており、現時点で最新の 4.7.0 -のマニュアルを翻訳しても、お手元の英語マニュアルとは内容が微妙に違うかもしれないのだ。 -バージョンが同じ 4.7.0 なのに、それでは紛らわしい。そこで、あえて現在の安定版、4.6.0 -のマニュアルを底本にした。 +\fBxargs\fP の 1 つめの呼び出しでは、 入力行の長さに上限はありません。 これは \fB\-I\fP オプションを使っていないからです。 +\fBxargs\fP の 2 つめの呼び出しには、 上限設定がありますが、 処理できなくなるような 1 行は、 +入ってこないのが明らかです。こうすることが理想的な解決法というわけではありません。 それよりも、 \fB\-I\fP +オプションが長さの制限を設けないでいる方が望ましいことです。 だからこそ、 この問題を「バグ」セクションで説明しているわけです。 なおこの問題は、 +\fBfind\fP(1) の出力では発生しません。 \fBfind\fP は 1 行に 1 ファイル名しか出力しないためです。 +. +.SH バグ報告 +GNU findutils オンラインヘルプ: + +.br +翻訳に関するバグ報告 +.PP +その他の問題について GNU Savannah バグトラッカー経由での報告: +.RS + +.RE +GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: +.RS + +.RE +. +.SH 著作権 +Copyright \(co 1990\-2022 Free Software Foundation, Inc. License GPLv3+: GNU +GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. There is +NO WARRANTY, to the extent permitted by law. +. +.SH 関連項目 +\fBfind\fP(1), \fBkill\fP(1), \fBlocate\fP(1), \fBupdatedb\fP(1), \fBfork\fP(2), +\fBexecvp\fP(3), \fBlocatedb\fP(5), \fBsignal\fP(7) .PP -ご参考までに書いておくと、2017/06/09 以降の 4.7.0-git の \fBxargs\fP -には、\fB\-o\fP (\fB\-\-open\-tty\fP) というオプションが追加されている。4.7.0-git -の \fBman xargs\fP によれば、「コマンドを実行する前に、子プロセスで標準入力を -/dev/tty として再オープンする」というものである。そうした最近のバージョンでは -\fB\-o\fP オプションを使えば、たとえば "find . -name '*.txt~' | xargs -o rm -i" -といったことが可能になるようだ。失敗しても困らないファイルでお試しいただきたい。 -(2018/03/03) +完全なドキュメント +.br +またローカルにおいては \fBinfo xargs\fP により参照できます。 diff --git a/manual/GNU_findutils/release/man5/locatedb.5 b/manual/GNU_findutils/release/man5/locatedb.5 index 5aadbea4..cb01130f 100644 --- a/manual/GNU_findutils/release/man5/locatedb.5 +++ b/manual/GNU_findutils/release/man5/locatedb.5 @@ -1,154 +1,100 @@ -.\" This file documents the GNU utilities for finding files that match -.\" certain criteria and performing various operations on them. +.\" -*- nroff -*- +.\"******************************************************************* .\" -.\" Copyright (C) 1994 Free Software Foundation, Inc. +.\" This file was generated with po4a. Translate the source file. .\" -.\" 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. +.\"******************************************************************* .\" -.\" 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. +.\" Translated Thu May 11 1997 +.\" by NAKANO Takeo +.\" Translatedd for 4.9.0, 2022/04/18 ribbon .\" -.\" 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. -.\" -.\" Japanese Version Copyright (c) 1997 NAKANO Takeo all rights reserved. -.\" Translated Thu May 11 1997 by NAKANO Takeo -.\" -.\"WORD front compression 前置圧縮 -.\"WORD offset differential count オフセット差分カウント -.TH LOCATEDB 5L \" -*- nroff -*- +.TH LOCATEDB 5 .SH 名前 locatedb \- 前置圧縮されたファイル名データベース +. .SH 説明 -このマニュアルページは GNU 版 -.BR locate -で用いるファイル名データベースのフォーマットについて記述したものである。 -ファイル名データベースには、最後に更新された時点において、 -特定のディレクトリツリー下に存在していたファイルのリストが含まれている。 -.PP -複数のデータベースを共存させることもできる。 -環境変数やコマンドラインオプションを指定すれば、 -ユーザーは \fBlocate\fP に検索させるデータベースを選択することができる。 -詳しくは -.BR locate (1L) -を見よ。 -システム管理者はデフォルトで用いられるデータベースの名前や、 -データベースの更新頻度、 -またデータベースに入れるディレクトリなどを選択することができる。 -通常ファイル名データベースの更新は -\fBupdatedb\fP プログラムを定期的に実行させることによって行なう -(夜間が良いだろう)。詳細は -.BR updatedb (1L) -を見よ。 -.PP -\fBupdatedb\fP は \fBfrcode\fP というプログラムを呼び出して -ファイル名のリストを前置圧縮 (front compression) する。 -これによってデータベースのサイズは 1/4 から 1/5 になる。 -前置圧縮 (インクリメンタルエンコーディングとも呼ばれる) -は以下のような動作をする。 -.PP -データベースのエントリはソートされたリストからなっている -(ユーザーの利便性のため、大文字小文字は区別していない)。 -従って、各々のエントリは直前のエントリと最初の数文字が一致していることが多い。 -それぞれのデータベースエントリには、 -まずオフセット差分カウントという 1 バイトのデータが入っている。 -これは現在のエントリと直前のエントリの共有部分の文字数から、 -直前のエントリとそのもうひとつ前のエントリの共有文字数を引いたものである -(従ってこの数値は負になることもある)。 -カウントの後には共有部分の文字列以降の残りが ASCII 文字列で与えられる。 -これはヌル文字で終端するとみなされる。 -.PP -もしオフセット差分カウントがバイトデータで与えられる範囲 -(+/\-127) を越えた場合は、バイトデータ 0x80 がカウントに代入され、 -2 バイトのワードデータがその後に続く。 -このワードデータでは高位バイトが先に来る -(ネットワークバイトオーダー)。 -.PP -すべてのデータベースは、 -ファイルエントリの最初に `LOCATE02' というダミーのエントリを持つ。 -これは \fBlocate\fP によってチェックされ、 -このデータベースが正しいフォーマットであることを確認するために用いられる。 -実際の検索においてはこのエントリは無視される。 -.PP -複数のデータベースを連結することはできない。 -最初の (ダミー) エントリを結合するデータベースから取り去れば良さそうだが、 -これは正しくない。 -なぜなら後に続くデータベースの最初のエントリにおける -オフセット差分カウントは正しい値を取り得ないからである。 -.PP -Unix 版 -.B locate -および -.B find -や、以前の GNU 版で用いられていた古いデータベースフォーマットも存在している。 -この古い形式のデータベースを作成する場合には、 -\fBupdatedb\fP は \fBbigram\fP と \fBcode\fP というプログラムを呼び出す。 -古いフォーマットが上に述べた記述と異なる点を以下に示す。 -それぞれのエントリがオフセット差分カウントのバイトデータで始まり -ヌル文字で終わる代わりに、 -0 から 28 までのバイトデータが -\-14 から 14 までのオフセット差分カウントとして用いられ、 -これがエントリ区切りを兼ねることになる。 -この範囲外の長いオフセット差分カウントを示すデータには、 -0x80 ではなく 0x1e (30) が使われる。 -長いカウントを保有するデータにはホストのバイトオーダが用いられ -(これはネットワークバイトオーダと等しいとは限らない)、 -またホストの integer のワードサイズ (4 バイトのことが多い) -が用いられる。 -またここにストアされるデータは実際の値から 14 を引いた値になる。 -データベースの各エントリには終端バイトが無く、 -30 以下の値を持つバイトデータが次のエントリの始まりであると認識される。 -.PP -さらに古いデータベース形式では、 -ダミーエントリの代わりに先頭に 256 バイトのテーブルがあり、 -ファイルリストでもっとも頻繁に用いられている -bigram が並べてある。 -bigram とは隣接した二つのバイトデータをインデックス付けしたものである。 -データベースに現われるバイトデータのうち、 -最高位ビットがセットされているものは -(残りの 7 ビットをインデックスとして) bigram テーブルのデータと置換される。 -この bigram とオフセット差分カウントを用いることで、 -データベースの大きさは新しいフォーマットより 20-25% 小さくなっている。 -しかし 8 ビットクリーンでないという欠点を併せ持つ。 -ファイル名に含まれるバイトデータのうち、 -スペシャルコードに属するものは、 -データベース中ではすべてクエスチョンマークで置き換えられる。 -これは任意の一文字を表わすシェルのワイルドカードなので、 -実際のファイル名に現われることはない。 +このマニュアルページは GNU 版 \fBlocate\fP +で用いるファイル名データベースのフォーマットについて記述したものです。ファイル名データベースには、最後に更新された時点において、特定のディレクトリツリー下に存在していたファイルのリストが含まれています。 +.P +複数のデータベースを共存させることもできます。環境変数やコマンドラインオプションを指定すれば、ユーザーは \fBlocate\fP +に検索させるデータベースを選択することができます。詳しくは \fBlocate\fP(1) +を参照してください。システム管理者はデフォルトで用いられるデータベースの名前や、データベースの更新頻度、またデータベースに入れるディレクトリなどを選択することができます。通常ファイル名データベースの更新は +\fBupdatedb\fP プログラムを定期的に実行させることによって行ないます(夜間が良いでしょう)。詳細は \fBupdatedb\fP(1) +を参照してください。 +. +.SH "GNU LOCATE02 データベースフォーマット" +これは \fBupdatedb\fP により生成されるデフォルトのデータベースフォーマットです。\fBupdatedb\fP は \fBfrcode\fP +というプログラムを呼び出してファイル名のリストを前置圧縮 (front compression) します。これによってデータベースのサイズは 1/4 +から 1/5 になります。前置圧縮 (インクリメンタルエンコーディングとも呼ばれる) は以下のような動作をします。 +.P +データベースのエントリは整列されたリストからなってます +(ユーザーの利便性のため、大文字小文字は区別していません)。従って、各々のエントリは直前のエントリと最初の数文字が一致していることが多くなります。それぞれのデータベースエントリには、まずオフセット差分カウントという +1 +バイトのデータが入っています。これは現在のエントリと直前のエントリの共有部分の文字数から、直前のエントリとそのもうひとつ前のエントリの共有文字数を引いたものです +(従ってこの数値は負になることもあります)。カウントの後には共有部分の文字列以降の残りが ASCII +文字列で与えられます。これはヌル文字で終端するとみなされます。 +.P +もしオフセット差分カウントがバイトデータで与えられる範囲 (\(+-127) を越えた場合は、バイトデータ 0x80 がカウントに代入され、2 +バイトのワードデータがその後に続きます。このワードデータでは高位バイトが先に来ます +(ネットワークバイトオーダー)。このカウントは負になることもあります(符号ビットは2バイトの最初の方にあります)。 +.P +すべてのデータベースは、ファイルエントリの最初に `LOCATE02' というダミーのエントリを持ちます。これは \fBlocate\fP +によってチェックされ、このデータベースが正しいフォーマットであることを確認するために用いられます。実際の検索においてはこのエントリは無視されます。 +.P +複数のデータベースを連結することはできません。最初の (ダミー) +エントリを結合するデータベースから取り去れば良さそうですが、これは正しくはありません。なぜなら後に続くデータベースの最初のエントリにおけるオフセット差分カウントは正しい値を取り得ないからです。 +.P +将来的に locate データベース内のデータは、特定順での並び替えができなくなるかもしれません。並び替えを必要とする場合は、\fBlocate\fP +の出力に対してパイプにより \fBsort \-f\fP を処理してください。 +. +.SH "slocate データベースフォーマット" +\fBslocate\fP プログラムが利用するデータベースフォーマットは \fBlocate\fP +が利用するものと似ていますが、全く同じではありません。データベースの最初のバイトは \fIsecurity\fP \fIlevel\fP (セキュリティレベル) +を指定しています。このセキュリティレベルが 0 のときは \fBslocate\fP +が読み込みを行い、データベース内にのみある情報に基づいて、ファイル名の検索と表示を行います。一方、セキュリティレベルが 1 +のとき、実行ユーザのデータベースアクセスが不能である場合、\fBslocate\fP はエントリ出力を省略する。データベースの 2 番目のバイトはゼロです。3 +番目のバイト以降にデータベースエントリが続きます。データベースエントリの先頭に、差分カウントやダミーエントリが置かれることはありません。その代わりに最初の項目に対する差分カウントは、ゼロとして取り扱われます。 +.P +2 番目のエントリがデータベースに存在していたとすると、データは GNU LOCATE02 フォーマットと同様のものとして解釈されます。 +. +.SH "古い locate データベースフォーマット" +Unix 版 \fBlocate\fP および \fBfind\fP や、以前の GNU +版で用いられていた古いデータベースフォーマットも存在しています。この古い形式のデータベースを作成する場合には、\fBupdatedb\fP は +\fBbigram\fP と \fBcode\fP +というプログラムを呼び出します。古いフォーマットが上に述べた記述と異なる点を以下に示します。それぞれのエントリがオフセット差分カウントのバイトデータで始まりヌル文字で終わる代わりに、0 +から 28 までのバイトデータが \-14 から 14 +までのオフセット差分カウントとして用いられ、これがエントリ区切りを兼ねることになります。この範囲外の長いオフセット差分カウントを示すデータには、0x80 +ではなく 0x1e (30) が使われます。長いカウントを保有するデータにはホストのバイトオーダが用いられ +(これはネットワークバイトオーダと等しいとは限りません)、またホストの integer のワードサイズ (4 バイトのことが多い) +が用いられます。またここにストアされるデータは実際の値から 14 を引いた値になります。データベースの各エントリには終端バイトが無く、30 +以下の値を持つバイトデータが次のエントリの始まりであると認識されます。 +.P +さらに古いデータベース形式では、ダミーエントリの代わりに先頭に 256 バイトのテーブルがあり、ファイルリストでもっとも頻繁に用いられている +bigram が並べてあります。bigram +とは隣接した二つのバイトデータをインデックス付けしたものです。データベースに現われるバイトデータのうち、最高位ビットがセットされているものは (残りの +7 ビットをインデックスとして) bigram テーブルのデータと置換されます。この bigram +とオフセット差分カウントを用いることで、データベースの大きさは新しいフォーマットより 20\-25% 小さくなっています。しかし 8 +ビットクリーンでないという欠点を併せ持ちます。ファイル名に含まれるバイトデータのうち、スペシャルコードに属するものは、データベース中ではすべてクエスチョンマークで置き換えられます。これは任意の一文字を表わすシェルのワイルドカードなので、実際のファイル名に現われることはありません。 +. .SH 例 -\fBfrcode\fP への入力が以下のようなものとする(ヌル文字は改行に置き換えて -ある): -.RS -.sp .nf + +.\" with nulls changed to newlines: +\fBfrcode\fP への入力が以下のようなものとします: /usr/src /usr/src/cmd/aardvark.c /usr/src/cmd/armadillo.c /usr/tmp/zoo -.fi -.sp -.RE + 直前のエントリとの最長一致部分の長さは: -.RS -.sp -.nf 0 /usr/src 8 /cmd/aardvark.c 14 rmadillo.c 5 tmp/zoo + .fi -.sp -.RE -\fBfrcode\fP からの出力は、最後のヌル文字を改行に代え、カウントバイト -を数字に代えると以下のようなものになる: -.RS -.sp +\fBfrcode\fP からの出力は、最後のヌル文字を改行に代え、カウントバイトを数字に代えると以下のようなものになります: .nf 0 LOCATE02 0 /usr/src @@ -156,15 +102,35 @@ bigram とは隣接した二つのバイトデータをインデックス付け 6 rmadillo.c \-9 tmp/zoo -(6 = 14 \- 8 また \-9 = 5 \- 14) +(6 = 14 \- 8 または \-9 = 5 \- 14) .fi +. +.SH バグ報告 +GNU findutils オンラインヘルプ: + +.br +翻訳に関するバグ報告: +.PP +その他の問題について GNU Savannah バグトラッカー経由での報告: +.RS + +.RE +GNU findutils パッケージのメーリングリスト \fIbug\-findutils\fP において議論されている全般的なトピック: +.RS + .RE +. +.SH 著作権 +Copyright \(co 1994\-2022 Free Software Foundation, Inc. License GPLv3+: GNU +GPL version 3 or later . +.br +This is free software: you are free to change and redistribute it. There is +NO WARRANTY, to the extent permitted by law. +. .SH 関連項目 -.BR find (1L), -.BR locate (1L), -.BR updatedb (1L), -.BR xargs (1L) +\fBfind\fP(1), \fBlocate\fP(1), \fBxargs\fP(1), \fBlocatedb\fP(5) +.PP +充実したドキュメントは +を参照してください。 .br -.B Finding Files -(on-line in Info, or printed) - +またローカルにおいては \fBinfo locatedb\fP により参照できます。 diff --git a/manual/GNU_findutils/translation_list b/manual/GNU_findutils/translation_list index a4d3f01a..58c0baf3 100644 --- a/manual/GNU_findutils/translation_list +++ b/manual/GNU_findutils/translation_list @@ -1,5 +1,5 @@ -●:GNU findutils:4.9.0:2022/02/02:find:1:2022/04/22::ribbon@users.osdn.me:ribbon: -●:GNU findutils:4.9.0:2022/02/02:locate:1:2022/04/22::ribbon@users.osdn.me:ribbon: -●:GNU findutils:4.9.0:2022/02/02:updatedb:1:2022/04/22::ribbon@users.osdn.me:ribbon: -●:GNU findutils:4.9.0:2022/02/02:xargs:1:2022/04/22::ribbon@users.osdn.me:ribbon: -●:GNU findutils:4.9.0:2022/02/02:locatedb:5:2022/04/22::ribbon@users.osdn.me:ribbon: +○:GNU findutils:4.9.0:2022/02/02:find:1:2022/04/22::ribbon@users.osdn.me:ribbon: +○:GNU findutils:4.9.0:2022/02/02:locate:1:2022/04/22::ribbon@users.osdn.me:ribbon: +○:GNU findutils:4.9.0:2022/02/02:updatedb:1:2022/04/22::ribbon@users.osdn.me:ribbon: +○:GNU findutils:4.9.0:2022/02/02:xargs:1:2022/04/22::ribbon@users.osdn.me:ribbon: +○:GNU findutils:4.9.0:2022/02/02:locatedb:5:2022/04/22::ribbon@users.osdn.me:ribbon: -- 2.11.0