File:  [Local Repository] / gnujdoc / findutils-4.1 / find-ja.texi
Revision 1.1: download - view: text, annotated - select for diffs
Fri Sep 7 13:19:39 2001 UTC (19 years, 1 month ago) by futoshi
Branches: MAIN
CVS tags: HEAD
Add findutils-1.4, and some bug fix.

    1: \input texinfo @c -*-texinfo-*-
    2: @c %**start of header
    3: @setfilename find-ja.info
    4: @settitle Finding Files
    5: @c For double-sided printing, uncomment:
    6: @c @setchapternewpage odd
    7: @c %**end of header
    8: 
    9: @c @documentlanguage ja
   10: 
   11: @set EDITION 1.1
   12: @set VERSION 4.1
   13: @set UPDATED November 1994
   14: 
   15: @iftex
   16: @finalout
   17: @end iftex
   18: 
   19: @ifinfo
   20: @format
   21: START-INFO-DIR-ENTRY
   22: * Finding Files(ja): (find-ja). Listing and operating on files
   23:                                 that match certain criteria.
   24: END-INFO-DIR-ENTRY
   25: @end format
   26: 
   27: This file documents the GNU utilities for finding files that match
   28: certain criteria and performing various operations on them.
   29: 
   30: Copyright (C) 1994 Free Software Foundation, Inc.
   31: 
   32: Permission is granted to make and distribute verbatim copies of
   33: this manual provided the copyright notice and this permission notice
   34: are preserved on all copies.
   35: 
   36: @ignore
   37: Permission is granted to process this file through TeX and print the
   38: results, provided the printed document carries copying permission
   39: notice identical to this one except for the removal of this paragraph
   40: (this paragraph not being relevant to the printed manual).
   41: 
   42: @end ignore
   43: Permission is granted to copy and distribute modified versions of this
   44: manual under the conditions for verbatim copying, provided that the entire
   45: resulting derived work is distributed under the terms of a permission
   46: notice identical to this one.
   47: 
   48: Permission is granted to copy and distribute translations of this manual
   49: into another language, under the above conditions for modified versions,
   50: except that this permission notice may be stated in a translation approved
   51: by the Foundation.
   52: @end ifinfo
   53: 
   54: @titlepage
   55: @title Finding Files
   56: @subtitle Edition @value{EDITION}, for GNU @code{find} version @value{VERSION}
   57: @subtitle @value{UPDATED}
   58: @author by David MacKenzie
   59: @c 翻訳:西尾 太
   60: 
   61: @page
   62: @vskip 0pt plus 1filll
   63: Copyright @copyright{} 1994 Free Software Foundation, Inc.
   64: 
   65: Permission is granted to make and distribute verbatim copies of
   66: this manual provided the copyright notice and this permission notice
   67: are preserved on all copies.
   68: 
   69: Permission is granted to copy and distribute modified versions of this
   70: manual under the conditions for verbatim copying, provided that the entire
   71: resulting derived work is distributed under the terms of a permission
   72: notice identical to this one.
   73: 
   74: Permission is granted to copy and distribute translations of this manual
   75: into another language, under the above conditions for modified versions,
   76: except that this permission notice may be stated in a translation approved
   77: by the Foundation.
   78: @end titlepage
   79: 
   80: @node Top, Introduction, , (dir)
   81: @comment  node-name,  next,  previous,  up
   82: 
   83: @ifinfo
   84: このファイルは,特定の基準に一致するファイルを検索し,それらに様々なアク
   85: ションを実行するGNUユーティリティの説明です.これは,@code{find}のバージョ
   86: ン@value{VERSION}に対する,エディション@value{EDITION}です.
   87: @end ifinfo
   88: 
   89: @c The master menu, created with texinfo-master-menu, goes here.
   90: 
   91: @menu
   92: * Introduction::                Summary of the tasks this manual describes.
   93: * Finding Files::               Finding files that match certain criteria.
   94: * Actions::                     Doing things to files you have found.
   95: * Common Tasks::                Solutions to common real-world problems.
   96: * Databases::                   Maintaining file name databases.
   97: * File Permissions::            How to control access to files.
   98: * Reference::                   Summary of how to invoke the programs.
   99: * Primary Index::               The components of @code{find} expressions.
  100: @end menu
  101: 
  102: @node Introduction, Finding Files, Top, Top
  103: @chapter はじめに
  104: 
  105: このマニュアルは,指定した基準にあったファイルを検索する方法と,見つけた
  106: ファイルに様々なアクションを実行する方法を示します.これらの作業を実行す
  107: るために使用する主なプログラムは,@code{find},@code{locate},そして
  108: @code{xargs}です.このマニュアルにある例は,これらのプログラムのGNUバー
  109: ジョン特有の能力を使用します.
  110: 
  111: GNU @code{find}は,元々Eric Deckerによって書かれ,David MacKenzie,Jay
  112: Plett,そしてTim Woodによって拡張されました.GNU @code{xargs}は,元々
  113: Mike Rendellによって書かれ,David MacKenzieによって拡張されました.GNU
  114: @code{locate}とそれに関連するユーティリティは,元々James Woodsによって書
  115: かれ,David MacKenzieよって拡張されました.@samp{find -print0}と
  116: @samp{xargs -0}に関するアイデアは,Dan Bernsteinによります.その他,多く
  117: の人がバグの修正,小さな改良,そして有益な提案を寄与してくれました.どう
  118: もありがとう!
  119: 
  120: これらのプログラムに関するメールでの提案とバグの報告先は
  121: @code{bug-gnu-utils@@prep.ai.mit.edu}になります.@samp{find --version}を
  122: 実行して得られるバージョンナンバーを含めてください.
  123: 
  124: @menu
  125: * Scope::
  126: * Overview::
  127: * find Expressions::
  128: @end menu
  129: 
  130: @node Scope
  131: @section スコープ
  132: 
  133: 簡潔にするため,このマニュアル内の単語@dfn{ファイル}は,通常のファイル,
  134: ディレクトリ,シンボリックリンク,またはディレクトリエントリを持つノード
  135: のようなその他のあらゆるものを意味します.ディレクトリエントリは@dfn{ファ
  136: イル名}とも呼ばれます.ファイル名は,ファイルに前置されるパス内のディレ
  137: クトリを,いくつか含む,全て含む,または全く含まないかもしれません.この
  138: マニュアルで``ファイル名''と呼ばれるものの全ての例があります.
  139: 
  140: @example
  141: parser.c
  142: README
  143: ./budget/may-94.sc
  144: fred/.cshrc
  145: /usr/local/include/termcap.h
  146: @end example
  147: 
  148: @dfn{ディレクトリツリー}はディレクトリとそれが含むファイル,その全てのサ
  149: ブディレクトリとそれが含むファイル等です.それは,単一のディレクトリでは
  150: ないファイルとすることも可能です.
  151: 
  152: これらのプログラムは,一つまたはそれ以上のディレクトリツリー内部の,以下
  153: のようなファイルを見つけることを可能にします.
  154: 
  155: @itemize @bullet
  156: @item
  157: 特定のテキストや特定のパターンに一致する名前を持つもの.
  158: @item
  159: 特定のファイルにリンクしているもの.
  160: @item
  161: 最近の特定の期間に使用されたもの.
  162: @item
  163: 特定の大きさの範囲にあるもの.
  164: @item
  165: 特定の形式(通常のファイル,ディレクトリ,シンボリックリンク等)のもの.
  166: @item
  167: 特定のユーザやグループに所有されているもの.
  168: @item
  169: 特定のアクセス許可を持つもの.
  170: @item
  171: 特定のパターンに一致するテキストを含むもの.
  172: @item
  173: ディレクトリツリーの特定の深さにあるもの.
  174: @item
  175: 上記の組み合わせ.
  176: @end itemize
  177: 
  178: 一旦探しているファイル(または,探している可能性があるファイル)を見つける
  179: と,単純なそれらの名前のリスト以上のものにすることが可能です.ファイルを
  180: 個別にまたは様々な大きさのまとまりとして,属性のあらゆる組み合わせを取得
  181: したり,多くの方法で処理したりすることが可能です.見つけたファイル上で実
  182: 行したい動作は,以下のことだけに制限されません.
  183: 
  184: @itemize @bullet
  185: @item
  186: 閲覧または編集.
  187: @item
  188: アーカイブへ保存.
  189: @item
  190: 削除や名前の変更.
  191: @item
  192: アクセス許可の変更.
  193: @item
  194: グループ分け.
  195: @end itemize
  196: 
  197: このマニュアルは,これらのそれぞれの作業を実行する方法と,それ以上のもの
  198: を記述しています.
  199: 
  200: 
  201: @node Overview
  202: @section 概要
  203: 
  204: 与えられた基準に一致するファイルのリストを作成し,その上でコマンドを実行
  205: するために使用される主なプログラムは,@code{find},@code{locate},そして
  206: @code{xargs}です.追加のコマンドは@code{updatedb}で,それは@code{locate}
  207: が使用するデータベースを作成するために,システム管理者が使用します.
  208: 
  209: @code{find}はディレクトリ階層内でファイルを検索し,見つかったファイルの情報を出力します.以下のように実行します.
  210: 
  211: @example
  212: find @r{[}@var{file}@dots{}@r{]} @r{[}@var{expression}@r{]}
  213: @end example
  214: 
  215: @noindent
  216: ここに典型的な@code{find}の使用方法があります.この例は,@file{/usr/src} 
  217: をルートとしたディレクトリツリー内で,名前が@samp{.c}で終り,100Kバイト
  218: 以上の大きさを持つ,全てのファイルの名前を出力します.
  219: @example
  220: find /usr/src -name '*.c' -size +100k -print
  221: @end example
  222: 
  223: @code{locate}は,特別なファイル名のデータベースで,パターンに一致するファ
  224: イル名を探します.システム管理者は,データベースを作成するために
  225: @code{updatedb}を実行します.@code{locate}は以下のように実行します.
  226: 
  227: @example
  228: locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{}
  229: @end example
  230: 
  231: @noindent
  232: この例は,デフォルトファイル名のデータベースで,名前が@samp{Makefile}ま
  233: たは@samp{makefile}で終わる,全てのファイルの名前を出力します.データベー
  234: スに保存されるファイル名は,システム管理者が@code{updatedb}を実行した方
  235: 法に依存します.
  236: 
  237: @example
  238: locate '*[Mm]akefile'
  239: @end example
  240: 
  241: 名前@code{xargs}は,EX-argsと発音され,それは``引数を統合する''という意
  242: 味があります.@code{xargs}は,標準入力で読み込む引数をかき集めることで構
  243: 築しコマンド行を実行します.これらの引数は,@code{find}で生成されるファ
  244: イル名のリストとなることが最も多くなっています.@code{xargs}は,以下のよ
  245: うに実行します.
  246: 
  247: @example
  248: xargs @r{[}@var{option}@dots{}@r{]} @r{[}@var{command} @r{[}@var{initial-arguments}@r{]}@r{]}
  249: @end example
  250: 
  251: @noindent
  252: 以下のコマンドは,ファイル@file{file-list}内にリストアップされているファ
  253: イルを検索し,単語@samp{typedef}を含むものの全ての行を出力します.
  254: @example
  255: xargs grep typedef < file-list
  256: @end example
  257: 
  258: 
  259: @node find Expressions
  260: @section @code{find}の式
  261: 
  262: ファイルを選択するために@code{find}が使用する式は,一つまたはそれ以上の
  263: @dfn{プライマリ}から成り立ち,それらはそれぞれ分離した@code{find}へのコ
  264: マンドライン引数です.@code{find}はそのたびに式を評価し,ファイルを処理
  265: します.式は以下のプライマリの形式のいずれかを含むことが可能です.
  266: 
  267: @table @dfn
  268: @item オプション(options)
  269: 特定のファイルの処理ではなく全体的な処理に影響を与えます.
  270: @item テスト(tests)
  271: ファイルの属性に依存し,真または偽の値を返します.
  272: @item アクション(actions)
  273: それらを評価するとき他の引数と連結し影響を与えます.
  274: @end table
  275: 
  276: 2つのプライマリの間のオペレータは省略可能です.そのデフォルトは
  277: @samp{-and}です.プライマリをより複雑な式に連結する方法は,
  278: @xref{Combining Primaries With Operators}.式が@samp{-prune}以外のアクショ
  279: ンを含まない場合,全ての式が真である全てのファイルで,@samp{-print}が動
  280: 作します(@pxref{Print File Name}).
  281: 
  282: 式の中にオプションがあるとき,それぞれのファイルに対し評価されるのではな
  283: く,すぐに影響を与えます.そのため,明確にするため,式の最初にそれらを配
  284: 置するのが最善です.
  285: 
  286: プライマリの多くは引数をとり,それらは@code{find}への次のコマンドライン
  287: 引数の直後に続きます.引数は,ファイル名,パターン,またはその他の文字列
  288: になるものもあります.それ以外は数字です.数字の引数は以下のように指定可
  289: 能です.
  290: 
  291: @table @code
  292: @item +@var{n}
  293: @var{n}より大きい.
  294: @item -@var{n}
  295: @var{n}より小さい.
  296: @item @var{n}
  297: @var{n}に等しい.
  298: @end table
  299: 
  300: 
  301: @node Finding Files, Actions, Introduction, Top
  302: @chapter ファイル検索
  303: 
  304: デフォルトで,@code{find}は標準出力に,与えられた基準に一致するファイル
  305: の名前を出力します.一致したファイルに関する詳細を取得する方法は,
  306: @xref{Actions}.
  307: 
  308: @menu
  309: * Name::
  310: * Links::
  311: * Time::
  312: * Size::
  313: * Type::
  314: * Owner::
  315: * Permissions::
  316: * Contents::
  317: * Directories::
  318: * Filesystems::
  319: * Combining Primaries With Operators::
  320: @end menu
  321: 
  322: @node Name
  323: @section 名前
  324: 
  325: 基準パターンに一致する名前をもつファイルを検索する方法下記のようになりま
  326: す.これらのテストでの@var{pattern}引数の記述については,@xref{Shell
  327: Pattern Matching}.
  328: 
  329: これらのテストには,@samp{i}で始まる名前を持つ,大文字小文字を区別バージョ
  330: ンと区別しないバージョンがあります.大文字小文字を区別しない比較では,パ
  331: ターン@samp{fo*}と@samp{F??}は,ファイル名@file{Foo},@samp{FOO},
  332: @samp{foo},@samp{fOo}等に一致します.
  333: 
  334: @menu
  335: * Base Name Patterns::
  336: * Full Name Patterns::
  337: * Fast Full Name Search::
  338: * Shell Pattern Matching::      Wildcards used by these programs.
  339: @end menu
  340: 
  341: @node Base Name Patterns
  342: @subsection ベース名のパターン
  343: 
  344: @deffn Test -name pattern
  345: @deffnx Test -iname pattern
  346: ファイル名のベース(前置されるディレクトリが削除されたパス)がシェルパター
  347: ン@var{pattern}に一致する場合は真です. @samp{-iname}の場合は,大文字小
  348: 文字の区別をしない一致です.ディレクトリツリー全体を無視するために,
  349: @samp{-prune}を使用して下さい(@pxref{Directories}).例として,
  350: @file{/usr/local/doc}のTexinfoソースファイルを見つけるため以下のようにし
  351: ます.
  352: 
  353: @example
  354: find /usr/local/doc -name '*.texi'
  355: @end example
  356: @end deffn
  357: 
  358: 
  359: @node Full Name Patterns
  360: @subsection 完全なファイル名のパターン
  361: 
  362: @deffn Test -path pattern
  363: @deffnx Test -ipath pattern
  364: 見つかったファイルで,コマンドライン引数で始まるファイル名全体がシェルパ
  365: ターン@var{pattern}に一致する場合は真です.@samp{-ipath}の場合は,大文字
  366: 小文字を区別しません.ディレクトリツリー全体を無視するために,ツリーの全
  367: てのファイルを調査するのではなく,@samp{-prune}を使用してください.
  368: @end deffn
  369: 
  370: @deffn Test -regex expr
  371: @deffnx Test -iregex expr
  372: ファイル名全体が正規表現@var{expr}に一致する場合は真です.これはパス全体
  373: への一致で,サーチではありません.例えば,@file{./fubar3}というファイル
  374: 名に一致させるため,正規表現@samp{.*bar.}や@samp{.*b.*3}は使用可能ですが,
  375: @samp{b.*r3}は不可能です.正規表現の構文の記述は,@xref{Regexps, ,
  376: Syntax of Regular Expressions, emacs, The GNU Emacs Manual}.
  377: @samp{-iregex}の場合は,大文字小文字を区別しません.
  378: @end deffn
  379: 
  380: @node Fast Full Name Search
  381: @subsection すばやい完全な名前の検索
  382: 
  383: 実際にディスク上のディレクトリをスキャンすることなく(きっと遅いでしょう),
  384: ファイルを名前で検索するために,@code{locate}プログラムを使用することが
  385: 可能です.与えたそれぞれのシェルパターンに対し,@code{locate}は,一つま
  386: たはそれ以上のファイル名のデータベースを検索し,パターンを含むファイル名
  387: を表示します.シェルパターンの詳細は,@xref{Shell Pattern Matching}.
  388: 
  389: パターンが---メタ文字を含まない---平文の場合,@code{locate}は,文字列を
  390: 含む全てのファイル名を表示します.パターンがメタ文字を含む場合,
  391: @code{locate}はパターンに正確に一致しているファイル名のみ表示します.結
  392: 果として,メタ文字を含むパターンは,通常@samp{*}で開始すべきで,同じもの
  393: で終わることが最も多くなっています.例外は,ファイル名の最初または最後へ
  394: の,明示的な一致を試みるパターンです.
  395: 
  396: 以下のコマンドは,
  397: @example
  398: locate @var{pattern}
  399: @end example
  400: 
  401: こちらとほとんど等価です.
  402: @example
  403: find @var{directories} -name @var{pattern}
  404: @end example
  405: 
  406: ここでの@var{directories}は,情報を含むファイル名データベースのディレク
  407: トリです.違いは@code{locate}情報が古い可能性があり,そして,
  408: @code{locate}は@code{find}とわずかに異なるパターンでワイルドカードを扱う
  409: ことです(@pxref{Shell Pattern Matching}) .
  410: 
  411: ファイル名データベースは,データベースが最後に更新されたときにシステムに
  412: 存在したファイルのリストを含みます.システム管理者はデフォルトのデータベー
  413: スのファイル名,データベースを更新する頻度,そして,エントリーを含むディ
  414: レクトリを選択することが可能です.
  415: 
  416: ここに,@code{locate}が検索するファイル名データベースを選択する方法があ
  417: ります.デフォルトはシステムに依存します.
  418: 
  419: @table @code
  420: @item --database=@var{path}
  421: @itemx -d @var{path}
  422: デフォルトのファイル名データベースを検索する代わりに,@var{path}内のファ
  423: イル名データベースを検索し,それはコロンで分けられたデータベースのファイ
  424: ル名リストとなります.検索するデータベースファイルのリストを設定するため
  425: に,環境変数@code{LOCATE_PATH}を使用することも可能です.両方使用されてい
  426: る場合,オプションは環境変数に優先します.
  427: @end table
  428: 
  429: 
  430: @node Shell Pattern Matching
  431: @subsection シェルパターンマッチング
  432: 
  433: @code{find}と@code{locate}は,ファイル名やファイル名の一部を,シェルパター
  434: ンと比較することが可能です.@dfn{シェルパターン}は,以下の特殊文字を含む
  435: 可能性がある文字列で,それは@dfn{ワイルドカード}や@dfn{メタ文字}をして知
  436: られています.
  437: 
  438: メタ文字を含むパターンを,シェルがそれ自身を展開することから避けるため引
  439: 用符で囲む必要があります.二重引用符とシングル引用符の両方が動作します.
  440: そのため,(それ自身は)バックスラッシュでエスケープします.
  441: 
  442: @table @code
  443: @item *
  444: ゼロ以上の文字に一致します.
  445: 
  446: @item ?
  447: あらゆる一文字に一致します.
  448: 
  449: @item [@var{string}]
  450: 文字列@var{string}に存在する,正確に1文字に一致します.これは@dfn{文字集
  451: 合}と呼ばれます.短いものとして,@var{string}は範囲を含めることが可能で,
  452: それは間にダッシュがある2つの文字です.例えば,集合@samp{[a-z0-9_]}は小
  453: 文字,数字,またはアンダースコアです.@samp{!}や@samp{^}を開括弧の前に配
  454: 置することで,否定集合も可能です.このため,@samp{[^A-Z@@]}は大文字とアッ
  455: トマーク以外に一致します.
  456: 
  457: @item \
  458: 以下の特殊文字の意味をなくします.これは文字集合でも動作します.
  459: @end table
  460: 
  461: @code{find}がシェルのパターンマッチ(@samp{-name},@samp{-path}等)で行な
  462: うテストでは,パターンの中のワイルドカードはファイル名の最初の@samp{.}に
  463: 一致しません.これは@code{locate}ではそうなりません.このため,
  464: @samp{find -name '*macs'}は@file{.emacs}に一致しませんが,@samp{locate
  465: '*macs'}では一致します.
  466: 
  467: スラッシュ文字は,@code{find}と@code{locate}が行なうシェルのパターンマッ
  468: チで特殊な意味はなく,ワイルドカードがそれに一致しないシェルとは異なりま
  469: す.そのため,パターン@samp{foo*bar}はファイル名@samp{foo3/bar}に一致し,
  470: パターン@samp{./sr*sc}はファイル名@samp{./src/misc}に一致するはずです.
  471: 
  472: 
  473: @node Links
  474: @section リンク
  475: 
  476: ファイルをお互いにリンクすること可能にする2つの方法があります.@dfn{シ
  477: ンボリックリンク(symbolic link)}は,他のファイルの名前の部分が内容になる,
  478: ファイルの特殊な形式です.@dfn{ハードリンク(hard link)}は,一つのファイ
  479: ルに対する,複数のディレクトリエントリですファイル名のすべては同じインデッ
  480: クスノード(@dfn{inode})番号をディスク上に持ちます.
  481: 
  482: @menu
  483: * Symbolic Links::
  484: * Hard Links::
  485: @end menu
  486: 
  487: @node Symbolic Links
  488: @subsection シンボリックリンク
  489: 
  490: @deffn Test -lname pattern
  491: @deffnx Test -ilname pattern
  492: ファイルがシェルパターン@var{pattern}に一致する内容のシンボリックリンク
  493: の場合は真です.@samp{-ilname}の場合は,大文字小文字を区別しない一致です.
  494: @var{pattern}引数の詳細は,@xref{Shell Pattern Matching}.そして,現在の
  495: ディレクトリとそのサブディレクトリ内の,@file{sysdep.c}へのあらゆるシン
  496: ボリックリンクをリストアップするために,以下のようにして行なうことができ
  497: ます.
  498: 
  499: @example
  500: find . -lname '*sysdep.c'
  501: @end example
  502: @end deffn
  503: 
  504: @deffn Option -follow
  505: シンボリックリンクと異なります.このオプションを与えた時の動作には,以下
  506: の違いがあります.
  507: 
  508: @itemize @bullet
  509: @item
  510: @code{find}は,ディレクトリツリーを検索する時,ディレクトリへのシンボリッ
  511: クリンクをたどります.
  512: @item
  513: @samp{-lname}と@samp{-ilname}は常に偽を返します.
  514: @item
  515: @samp{-type}はシンボリックリンクが示すファイルの形式を報告します.
  516: @item
  517: 暗黙に@samp{-noleaf}を指定します(@pxref{Directories}).
  518: @end itemize
  519: @end deffn
  520: 
  521: 
  522: @node Hard Links
  523: @subsection ハードリンク
  524: 
  525: ハードリンクを探すため,最初に見つけたいファイルにリンクしているファイル
  526: のinodeナンバーを取得します.@samp{ls -i}や@samp{find -ls}を実行すること
  527: で,ファイルのinodeナンバーとそれへのリンクの数を知ることが可能です.ファ
  528: イルに1つ以上のリンクがある場合,そのinodeナンバーを@samp{-inum}に渡すこ
  529: とで,他のリンクを検索することが可能です.多くのシステムの@file{/usr}の
  530: ように,他のファイルシステムをマウントしているディレクトリを起点に検索を
  531: 開始している場合は,@samp{-xdev}オプションを加えて下さい.ファイルへのハー
  532: ドリンクは同じファイルシステムに存在する必要があるので,これを行なうこと
  533: で不要な検索を防ぎます.@xref{Filesystems}.
  534: 
  535: @deffn Test -inum n
  536: ファイルがinodeナンバー@var{n}を持つかどうかの調査.
  537: @end deffn
  538: 
  539: @samp{-links}を用いると,特定の数のリンクを持つファイルを検索することも
  540: 可能です.ディレクトリは通常,少なくとも2つのハードリンクがあります.そ
  541: れらの@file{.}エントリは2番目のものです.サブディレクトリがある場合,そ
  542: れは個別に親ディレクトリを示す@file{..}と呼ばれるハードリンクもあります.
  543: 
  544: @deffn Test -links n
  545: ファイルが@var{n}個のハードリンクを持つかどうかの調査.
  546: @end deffn
  547: 
  548: 
  549: @node Time
  550: @section 時間
  551: 
  552: それぞれのファイルには3つのタイムスタンプがあり,それらはファイルに対し
  553: て特定な処理を実行した,最後の時間を記録します.
  554: 
  555: @enumerate
  556: @item
  557: アクセス(ファイルの内容を読み込む)
  558: @item
  559: ステータスの変更(ファイルの編集や属性の変更)
  560: @item
  561: 編集(ファイルの内容を変更)
  562: @end enumerate
  563: 
  564: タイムスタンプが特定の範囲にあるファイルを検索したり,他のタイムスタンプ
  565: と比較したりすることが可能です.
  566: 
  567: @menu
  568: * Age Ranges::
  569: * Comparing Timestamps::
  570: @end menu
  571: 
  572: @node Age Ranges
  573: @subsection 期間の範囲
  574: 
  575: これらのテストは,範囲(@samp{+@var{n}}と@samp{-@var{n}})を用いる場合に,
  576: 主に役立ちます.
  577: 
  578: @deffn Test -atime n
  579: @deffnx Test -ctime n
  580: @deffnx Test -mtime n
  581: ファイルの最後のアクセス(またはステータスの変更,または編集)が,
  582: @var{n}*24時間前の場合は真です.
  583: @end deffn
  584: 
  585: @deffn Test -amin n
  586: @deffnx Test -cmin n
  587: @deffnx Test -mmin n
  588: ファイルの最後のアクセス(またはステータスの変更,または編集)が,@var{n} 
  589: 分前の場合は真です.これらのテストは,@samp{-atime}等よりもより細かな計
  590: 測を提供します.例えば,@file{/u/bill}内の最後に読み込まれたのが2〜6分
  591: @footnote{訳注:原文はhours(時間)だが間違いと思われる.} 前のファイルを
  592: リストアップするために以下のようにします.
  593: 
  594: @example
  595: find /u/bill -amin +2 -amin -6
  596: @end example
  597: @end deffn
  598: 
  599: @deffn Option -daystart
  600: 24時間前ではなく今日の最初から時間をはかります.そのため,ホームディレク
  601: トリ内で昨日編集された通常のファイルをリストアップするために,以下のよう
  602: にします.
  603: 
  604: @example
  605: find ~ -daystart -type f -mtime 1
  606: @end example
  607: @end deffn
  608: 
  609: 
  610: @node Comparing Timestamps
  611: @subsection タイムスタンプの比較
  612: 
  613: タイムスタンプを現在の時間と比較する代わりに,それを他のファイルのタイム
  614: スタンプと比較することが可能です.そのファイルのタイムスタンプは,いくつ
  615: かのイベントによって,他のプログラムによって更新されるかもしれません.ま
  616: た,@code{touch}コマンドを使用して,特定の固定した日付に設定することもで
  617: きるでしょう.例えば,今年の1月1日移行に編集された@file{/usr}内のファイ
  618: ルをリストアップするために,以下のようにします.
  619: 
  620: @c Idea from Rick Sladkey.
  621: @example
  622: touch -t 02010000 /tmp/stamp$$
  623: find /usr -newer /tmp/stamp$$
  624: rm -f /tmp/stamp$$
  625: @end example
  626: 
  627: @deffn Test -anewer file
  628: @deffnx Test -cnewer file
  629: @deffnx Test -newer file
  630: ファイルが最後にアクセス(またはステータスの変更,または編集)されたのが
  631: @var{file}の編集以降の場合は真です.これらのテストは,@samp{-follow}がコ
  632: マンドラインのそれら(のオプション)の前にある場合のみ,@samp{-follow}影響
  633: を受けます.
  634: 
  635: @example
  636: find . -newer /bin/sh
  637: @end example
  638: @end deffn
  639: 
  640: @deffn Test -used n
  641: ファイルが最後にアクセスされたのが,そのステータスが最後に変更されてから
  642: @var{n}日後の場合は真です.使用されておらず,ディスクスペースを確保する
  643: ために圧縮または削除されたファイルを探すのに役立ちます.
  644: @end deffn
  645: 
  646: 
  647: @node Size
  648: @section サイズ
  649: 
  650: @deffn Test -size n@r{[}bckw@r{]}
  651: 切上げで@var{n}単位領域をファイルが使用している場合は真です.単位はデフォ
  652: ルトで512バイトブロックですが,@var{n}の接尾子として1文字加えることで変
  653: 更可能です.
  654: 
  655: @table @code
  656: @item b
  657: 512バイトブロック単位
  658: @item c
  659: バイト単位
  660: @item k
  661: キロバイト(1024バイト)単位
  662: @item w
  663: 2バイトワード単位
  664: @end table
  665: 
  666: サイズは間接的なブロックを数えませんが,実際には割り当てられていない疎ら
  667: なファイル内のブロックは数えます.
  668: @end deffn
  669: 
  670: @deffn Test -empty
  671: ファイルが空の場合で,通常のファイルまたはディレクトリのどちらかの場合は
  672: 真です.これで,削除に適した候補が作成されるでしょう.このテストは,
  673: @samp{-depth} (@pxref{Directories})と@samp{-exec rm -rf '@{@}' ';'}
  674: (@pxref{Single File})とともに用いた場合,役に立ちます.
  675: @end deffn
  676: 
  677: 
  678: @node Type
  679: @section 形式
  680: 
  681: @deffn Test -type c
  682: ファイルが@var{c}の形式の場合は真です.
  683: 
  684: @table @code
  685: @item b
  686: (バッファされる)ブロックスペシャルファイル
  687: @item c
  688: (バッファされない)ブロックスペシャルファイル
  689: @item d
  690: ディレクトリ
  691: @item p
  692: 名前付きパイプ(FIFO)
  693: @item f
  694: 通常のファイル
  695: @item l
  696: シンボリックリンク
  697: @item s
  698: ソケット
  699: @end table
  700: @end deffn
  701: 
  702: @deffn Test -xtype c
  703: ファイルがシンボリックリンクでない場合,@samp{-type}と同じです.シンボリッ
  704: クリンクに対しては以下のようになります.@samp{-follow}が与えられていない
  705: 場合,ファイルが@var{c}形式のファイルにリンクしている場合は真です.
  706: @samp{-follow}が与えられている場合,@var{c}が@samp{l}の場合は真です.言
  707: い替えると,シンボリックリンクに対し,@samp{-xtype}は,@samp{-type}が調
  708: 査しないファイルの形式を調査します.@samp{-follow}の詳細は,
  709: @xref{Symbolic Links}.
  710: @end deffn
  711: 
  712: 
  713: @node Owner
  714: @section 所有者
  715: 
  716: @deffn Test -user uname
  717: @deffnx Test -group gname
  718: ファイルが(グループ@var{gname}に所属する)ユーザ@var{uname}に所有されてい
  719: る場合は真です.数字のIDも可能です.
  720: @end deffn
  721: 
  722: @deffn Test -uid n
  723: @deffnx Test -gid n
  724: ファイルの数字のユーザID(グループID)が@var{n}の場合は真です.これらのテ
  725: ストは,@samp{-user}と@samp{-group}とは異なり,範囲指定(@samp{+@var{n}}
  726: と@samp{-@var{n}}) をサポートします.
  727: @end deffn
  728: 
  729: @deffn Test -nouser
  730: @deffnx Test -nogroup
  731: ファイルの数字のユーザIDに対応するユーザがいない(数字のグループIDに対応
  732: するグループがない)場合は真です.これらの場合は,通常,システムから削除
  733: されているためにユーザに属さなくなったファイルを意味します.そのようなファ
  734: イルの所有権を,@code{chown}や@code{chgrp}プログラムを使用して,既存の
  735: ユーザとグループに変更したほうが良いでしょう.
  736: @end deffn
  737: 
  738: 
  739: @node Permissions
  740: @section 許可
  741: 
  742: ファイルの許可の構造とそれを指定する方法に関する情報は,@xref{File
  743: Permissions}.
  744: 
  745: @deffn Test -perm mode
  746: ファイルの許可が正確に@var{mode}(数値的でも象徴的でも可能です)と同一の場
  747: 合は真です.象徴的なモードは,0を起点として使用します.@var{mode}が
  748: @samp{-}で始まっている場合,@var{mode}の許可が@emph{すべて}ファイルに設
  749: 定されている場合は真です.@var{mode}に設定されていない許可は無視されます.
  750: @var{mode}が@samp{+}で始まっている場合,@var{mode}の許可が@emph{ひとつで
  751: も}ファイルに設定されている場合は真です.@var{mode}に設定されていない許
  752: 可は無視されます.
  753: @end deffn
  754: 
  755: 
  756: @node Contents
  757: @section 内容
  758: 
  759: ファイルの内容を基に検索するために,@code{grep}プログラムを使用すること
  760: が可能です.例えば,現在のディレクトリで,文字列@samp{thing}を含むCのソー
  761: スファイルを見つけるためには,以下のようにすることで可能となります.
  762: 
  763: @example
  764: grep -l thing *.[ch]
  765: @end example
  766: 
  767: サブディレクトリのファイルの文字列を検索したい時も,以下のように
  768: @code{find}と@code{xargs}を用いて,@code{grep}を組み合わせることが可能で
  769: す.
  770: 
  771: @example
  772: find . -name '*.[ch]' | xargs grep -l thing
  773: @end example
  774: 
  775: @code{grep}は@samp{-l}オプションで,文字列を含む行ではなくそれを含むファ
  776: イル名のみ出力します.文字列の引数(@samp{thing})は,実際には正規表現で,
  777: そのためメタ文字を含みます.この方法で,@code{find}の出力がない場合は
  778: @code{xargs}に@code{grep}を実行させないように,@samp{-r}オプションを使用
  779: したり,名前にスペースを含んでいて間違って解釈することを防ぐために,
  780: @code{find}のアクション@samp{-print0}と@code{xargs}のオプション@samp{-0} 
  781: を使用することで改善が可能です.
  782: 
  783: @example
  784: find . -name '*.[ch]' -print0 | xargs -r -0 grep -l thing
  785: @end example
  786: 
  787: パターンに一致する内容があるファイルを見つけるためのより完全な扱いは,
  788: @code{grep}のマニュアルページを参照して下さい.
  789: 
  790: 
  791: @node Directories
  792: @section ディレクトリ
  793: 
  794: ディレクトリでの@code{find}の検索を制御し,それらを検索する方法がここに
  795: あります.これらの2つのオプションで,ディレクトリツリーを輪切りにする処
  796: 理が可能となります.
  797: 
  798: @deffn Option -maxdepth levels
  799: コマンドライン引数以下の,最大@var{levels}(正の整数)のレベルのディレクト
  800: リまで下ります.@samp{-maxdepth 0}はコマンドライン引数のみ,テストとアク
  801: ションを適用することを意味します.
  802: @end deffn
  803: 
  804: @deffn Option -mindepth levels
  805: @var{levels}(正の整数)未満のレベルではテストもアクションも適用しません.
  806: @samp{-mindepth 1}はコマンドライン引数以外のすべてのファイルを処理するこ
  807: とを意味します.
  808: @end deffn
  809: 
  810: @deffn Option -depth
  811: ディレクトリ自身の前に,それぞれのディレクトリの内容を処理します.
  812: @code{cpio}や@code{tar}でファイルのリストを生成する時,これを行なうのは
  813: 良い考えです.ディレクトリにその所有者に対する書き込み許可がない場合,ディ
  814: レクトリの許可はその内容のあとで復元されるため,その内容はアーカイブから
  815: 復元することが可能です.
  816: @end deffn
  817: 
  818: @deffn Action -prune
  819: @samp{-depth}が与えられていない場合は真です,現在のディレクトリから下り
  820: ません.@samp{-depth}が与えられている場合は,偽です.効果はありません.
  821: @samp{-prune}は,その式の前ではなく,後にあるテストとアクションにのみ効
  822: 果があります.
  823: 
  824: 例えば,ディレクトリ@file{src/emacs}と,そのすべてのファイルと,それ以下
  825: のディレクトリを省略し,それ以外で見つかったファイルの名前を出力するため
  826: に以下のようにします.
  827: 
  828: @example
  829: find . -path './src/emacs' -prune -o -print
  830: @end example
  831: @end deffn
  832: 
  833: @deffn Option -noleaf
  834: ディレクトリが,ハードリンクの数より2少ないサブディレクトリを含むことを
  835: 仮定することで,最適化を行ないません.このオプションは,CD-ROMやMS-DOSファ
  836: イルシステムやAFSボリュームマウントポイントといった,Unixのディレクトリ
  837: リンクの規約に従わないファイルシステムを検索する時に必要です.通常のUnix 
  838: のファイルシステムのそれぞれのディレクトリは,少なくとも2つのハードリン
  839: クがあります.その名前とその@file{.}エントリです.更に,そのサブディレク
  840: トリ(が存在する場合)には,そのディレクトリにリンクしている@file{..}エン
  841: トリが,それぞれにあります.@code{find}がディレクトリを調査している時,
  842: ディレクトリのリンク数よりサブディレクトリが2つ少ないことがはっきりした
  843: 後で,それはディレクトリのエントリの残りがディレクトリでない(ディレクト
  844: リ内の@dfn{leaf}ツリー)ことが分かります.ファイルの名前のみ調査に必要な
  845: 場合は,それらをはっきりさせる必要はありません.これで検索スピードが飛躍
  846: 的に増加します.
  847: @end deffn
  848: 
  849: 
  850: @node Filesystems
  851: @section ファイルシステム
  852: 
  853: @dfn{ファイルシステム}とはディスクの区分のことで,それはローカルホスト,
  854: または,ネットワーク経由のリモートホストからマウントされたもののいずれか
  855: になります.ネットワークファイルシステムを検索すると遅くなるはずなので,
  856: 通常は@code{find}がそうすることを避けます.
  857: 
  858: 特定のファイルシステムの検索を避ける2つの方法があります.一つの方法は,
  859: @code{find}に1つのファイルシステムのみを検索するよう伝えることです.
  860: 
  861: @deffn Option -xdev
  862: @deffnx Option -mount
  863: 他のファイルシステムのディレクトリに下りません.これらのオプションは同じ
  864: です.
  865: @end deffn
  866: 
  867: もう一つの方法は,それぞれのファイルがあるファイルシステムの形式を調査し,
  868: 好ましくないファイルシステムの形式にあるディレクトリに下らないようにしま
  869: す.
  870: 
  871: @deffn Test -fstype type
  872: ファイルが,形式@var{type}のファイルシステム上にある場合は真です.有効な
  873: ファイルシステム形式は,Unixの異なるバージョン間で異なります.いくつかの
  874: バージョンのUnixなどが受け入れる,ファイルシステムの形式の不完全なリスト
  875: は,以下のとおりです.
  876: @example
  877: ufs 4.2 4.3 nfs tmp mfs S51K S52K
  878: @end example
  879: ファイルシステムの形式を知るために,@samp{%F}指示語とともに
  880: @samp{-printf}を使用することが可能です.@xref{Print File Information}.リ
  881: モートファイルシステムの検索を避けるために,@samp{-fstype}は通常,
  882: @samp{-prune}とともに使用されます.(@pxref{Directories}).
  883: @end deffn
  884: 
  885: 
  886: @node Combining Primaries With Operators
  887: @section オペレーターの主なものを組み合わせる
  888: 
  889: オペレータはテストとアクションから,複雑な表現を構築します.オペレータは
  890: 優先順位が下がる順序で,以下のものがあります.
  891: 
  892: @table @code
  893: @item @asis{( @var{expr} )}
  894: 優先順位をあげます.@var{expr}が真の場合は真です.
  895: 
  896: @item @asis{! @var{expr}}
  897: @itemx @asis{-not @var{expr}}
  898: @var{expr}が偽の場合は真です.
  899: 
  900: @item @asis{@var{expr1 expr2}}
  901: @itemx @asis{@var{expr1} -a @var{expr2}}
  902: @itemx @asis{@var{expr1} -and @var{expr2}}
  903: And(論理積)です.@var{expr1}が偽の場合,@var{expr2}は評価されません.
  904: 
  905: @item @asis{@var{expr1} -o @var{expr2}}
  906: @itemx @asis{@var{expr1} -or @var{expr2}}
  907: Or(論理和)です.@var{expr1}が真の場合,@var{expr2}は評価されません.
  908: 
  909: @item @asis{@var{expr1} , @var{expr2}}
  910: リストです.@var{expr1}と@var{expr2}は,常に評価されます.@var{expr2}が
  911: 真の場合は真です.@var{expr1}の値は放棄されます.このオペレータで,一回
  912: の処理で,他の処理が成功したかどうかに依存せず,複数の独立した処理を行な
  913: うことができます.
  914: @end table
  915: 
  916: @code{find}は,右から左まで式を評価しながら,それぞれのファイル名を起点
  917: としたディレクトリツリーを,優先順位の規則に従い,(@samp{-and}に対しては
  918: 左が偽,@samp{-or}に対しては真となる)結果が分かるまで検索し,そして,
  919: @code{find}は次のファイル名へ移動します.
  920: 
  921: 複雑な表現で役に立つ,2つのテストが他にあります.
  922: 
  923: @deffn Test -true
  924: 常に真です.
  925: @end deffn
  926: 
  927: @deffn Test -false
  928: 常に偽です.
  929: @end deffn
  930: 
  931: 
  932: @node Actions, Common Tasks, Finding Files, Top
  933: @chapter アクション
  934: 
  935: @code{find}の式で与えた基準に一致するファイルの情報を出力する方法が,い
  936: くつかあります.標準出力または指名したファイルに,情報を出力することが可
  937: 能です.ファイル名を引数として,コマンドを実行することも可能です.これら
  938: のコマンドを,選択したファイルへのフィルターとして以外でも使用することが
  939: 可能です.
  940: 
  941: @menu
  942: * Print File Name::
  943: * Print File Information::
  944: * Run Commands::
  945: * Adding Tests::
  946: @end menu
  947: 
  948: @node Print File Name
  949: @section ファイル名の出力
  950: 
  951: @deffn Action -print
  952: 真の時,完全なファイル名を標準出力に出力し,改行を続けます.
  953: @end deffn
  954: 
  955: @deffn Action -fprint file
  956: 真の時,完全なファイル名をファイル@var{file}に出力し,改行を続けます.
  957: @code{find}の実行時に@var{file}が存在しない場合は作成されます.存在する
  958: 場合は0バイトに切り詰められます.ファイル名@file{/dev/stdout}と
  959: @file{/dev/stderr}は,特別な扱いをされます.それらはそれぞれ,標準出力と
  960: 標準エラー出力を参照します.
  961: @end deffn
  962: 
  963: 
  964: @node Print File Information
  965: @section ファイル情報の出力
  966: 
  967: @deffn Action -ls
  968: 真の時,現在のファイルを@samp{ls -dils}の書式で標準出力にリストアップし
  969: ます.出力はこのようになります.
  970: 
  971: @smallexample
  972: 204744   17 -rw-r--r--   1 djm      staff       17337 Nov  2  1992 ./lwall-quotes
  973: @end smallexample
  974: 
  975: フィールドは以下のとおりです.
  976: 
  977: @enumerate
  978: @item
  979: ファイルのinodeナンバーです.inodeナンバーを元にしたファイルの検索方法は,
  980: @xref{Hard Links}.
  981: 
  982: @item
  983: ファイルのブロック数です.ブロック計算は,512バイトブロック単位を使用す
  984: る環境変数@code{POSIXLY_CORRECT}が設定されていない場合,1Kブロック単位で
  985: す.サイズを元にしたファイルの検索方法は,@xref{Size}.
  986: 
  987: @item
  988: ファイルの形式と許可です.形式は,通常のファイルに対してはダッシュで表示
  989: されます.それ以外のファイル形式に対しては,@samp{-type}に対して使用され
  990: る文字です(@pxref{Type}).許可は,読み込み,書き込み,そして実行で,それ
  991: ぞれファイルの所有者,そのグループ,そしてその他のユーザに対するものです.
  992: ダッシュは許可が与えられていないことを意味します.ファイルの許可の詳細は,
  993: @xref{File Permissions}.その許可を元にしたファイルの検索方法は,
  994: @xref{Permissions}.
  995: 
  996: @item
  997: ファイルに対するハードリンクの数です.
  998: 
  999: @item
 1000: ファイルを所有しているユーザです.
 1001: 
 1002: @item
 1003: ファイルのグループです.
 1004: 
 1005: @item
 1006: ファイルのバイト単位のサイズです.
 1007: 
 1008: @item
 1009: ファイルが竿語の編集された日付です.
 1010: 
 1011: @item
 1012: ファイル名です.@samp{-ls}は,ファイル名で使用されている出力不可能な文字
 1013: を,Cのようなバックスラッシュエスケープを使用して引用符で囲みます.
 1014: @end enumerate
 1015: @end deffn
 1016: 
 1017: @deffn Action -fls file
 1018: 真の時,@samp{-ls}に似ていますが,@samp{-fprint}のように@var{file}に書き
 1019: 出します(@pxref{Print File Name}).
 1020: @end deffn
 1021: 
 1022: @deffn Action -printf format
 1023: 真の時,@samp{\}エスケープと@samp{%}指示語を解釈しながら,@var{format}を
 1024: 標準出力に出力します.フィールドの幅と精度は,C関数の@code{printf}の用に
 1025: 指定可能です.@samp{-print}とは異なり,@samp{-printf}は文字列の終りに改
 1026: 行を追加しません.
 1027: @end deffn
 1028: 
 1029: @deffn Action -fprintf file format
 1030: 真の時,@samp{-printf}に似ていますが,@samp{-fprint}のように@var{file}に
 1031: 書き出します(@pxref{Print File Name}).
 1032: @end deffn
 1033: 
 1034: @menu
 1035: * Escapes::
 1036: * Format Directives::
 1037: * Time Formats::
 1038: @end menu
 1039: 
 1040: @node Escapes
 1041: @subsection エスケープ
 1042: 
 1043: @samp{-printf}と@samp{-fprintf}で認識されるエスケープは以下のとおりです.
 1044: 
 1045: @table @code
 1046: @item \a
 1047: アラームベル.
 1048: @item \b
 1049: バックスペース.
 1050: @item \c
 1051: この書式の直後出力の停止し,出力をフラッシュ.
 1052: @item \f
 1053: フォームフィード.
 1054: @item \n
 1055: 改行.
 1056: @item \r
 1057: キャリッジリターン.
 1058: @item \t
 1059: 水平タブ.
 1060: @item \v
 1061: 垂直タブ.
 1062: @item \\
 1063: バックスラッシュそのもの(@samp{\}).
 1064: @end table
 1065: 
 1066: @samp{\}文字に他の文字が続くものは,通常の文字として扱われるので,両方が
 1067: 出力され,(おそらくそれは入力ミスなので)標準エラー出力に警告メッセージが
 1068: 出力されます.
 1069: 
 1070: 
 1071: @node Format Directives
 1072: @subsection 書式指示語
 1073: 
 1074: @samp{-printf}と@samp{-fprintf}は,処理しているファイルに関する情報を出
 1075: 力するため,以下の書式指示語をサポートします.Cの@code{printf}関数と異な
 1076: り,それらはフィールド幅の指定をサポートしていません.
 1077: 
 1078: @samp{%%}はパーセント記号そのものです.他の文字が続く@samp{%}文字は削除
 1079: され(が,それ<%>以外の文字は出力され),(おそらく入力ミスのため)標準出力
 1080: に警告メッセージが出力されます.
 1081: 
 1082: @menu
 1083: * Name Directives::
 1084: * Ownership Directives::
 1085: * Size Directives::
 1086: * Location Directives::
 1087: * Time Directives::
 1088: @end menu
 1089: 
 1090: @node Name Directives
 1091: @subsubsection 名前指示語
 1092: 
 1093: @table @code
 1094: @item %p
 1095: ファイル名.
 1096: @item %f
 1097: 前置されるディレクトリを削除したファイル名(最後の要素のみ).
 1098: @item %h
 1099: ファイル名に前置されるディレクトリ(最後の要素とその前のスラッシュ以外す
 1100: べて).
 1101: @item %P
 1102: ファイル名で,それが見つけられたコマンドライン引数の名前は,最初から削除
 1103: されます.
 1104: @item %H
 1105: それによりファイルが見つけられた,コマンドライン引数.
 1106: @end table
 1107: 
 1108: 
 1109: @node Ownership Directives
 1110: @subsubsection 所有者指示語
 1111: 
 1112: @table @code
 1113: @item %g
 1114: ファイルのグループ名,または名前がない場合はグループID.
 1115: @item %G
 1116: ファイルの数値的なグループID.
 1117: @item %u
 1118: ファイルのユーザ名,または名前がない場合はユーザID.
 1119: @item %U
 1120: ファイルの数値的なユーザID.
 1121: @item %m
 1122: ファイルの許可(8進数)
 1123: @end table
 1124: 
 1125: 
 1126: @node Size Directives
 1127: @subsubsection サイズ指示語
 1128: 
 1129: @table @code
 1130: @item %k
 1131: 1Kブロック単位でのファイルサイズ(切上げ).
 1132: @item %b
 1133: 512バイトブロック単位でのファイルサイズ(切上げ).
 1134: @item %s
 1135: バイト単位でのファイルサイズ.
 1136: @end table
 1137: 
 1138: 
 1139: @node Location Directives
 1140: @subsubsection 位置指示語
 1141: 
 1142: @table @code
 1143: @item %d
 1144: ディレクトリツリーでのファイルの深さ.コマンドラインのファイル名は,深さ
 1145: が0です.
 1146: @item %F
 1147: ファイルが存在するファイルシステム.この値は,@samp{-fstype}で使用される
 1148: はずです(@pxref{Directories}).
 1149: @item %l
 1150: シンボリックリンクのオブジェクト(ファイルがシンボリックリンクでない場合
 1151: は空文字です.)
 1152: @item %i
 1153: ファイルのinodeナンバー(10進数).
 1154: @item %n
 1155: ファイルのハードリンクのナンバー.
 1156: @end table
 1157: 
 1158: 
 1159: @node Time Directives
 1160: @subsubsection 時間指示語
 1161: 
 1162: これらの指示語にはCの@code{ctime}関数を使用するものもあります.その出力
 1163: は現在のロケールに依存しますが,典型的なものは以下のようになります.
 1164: 
 1165: @example
 1166: Wed Nov  2 00:42:36 1994
 1167: @end example
 1168: 
 1169: @table @code
 1170: @item %a
 1171: Cの@code{ctime}関数で返される書式での,ファイルの最後にアクセスされた時
 1172: 間.
 1173: @item %A@var{k}
 1174: @var{k}で指定される書式での,ファイルの最後にアクセスされた時間
 1175: (@pxref{Time Formats}).
 1176: @item %c
 1177: Cの@code{ctime}関数で返される書式での,ファイルの最後にステータスが変更
 1178: された時間.
 1179: @item %C@var{k}
 1180: @var{k}で指定される書式での,ファイルの最後にステータスが変更された時間
 1181: (@pxref{Time Formats}).
 1182: @item %t
 1183: Cの@code{ctime}関数で返される書式での,ファイルの最後に編集された時間.
 1184: @item %T@var{k}
 1185: @var{k}で指定される書式での,ファイルの最後に編集された時間(@pxref{Time
 1186: Formats}).
 1187: @end table
 1188: 
 1189: 
 1190: @node Time Formats
 1191: @subsection 時間の書式
 1192: 
 1193: 以下は,指示語@samp{%A},@samp{%C},そして@samp{%T}に対する書式で,それ
 1194: はファイルのタイムスタンプを出力します.これらの書式には,Cの
 1195: @code{strftime}関数のシステム間での違いにより,すべてのシステムで利用可
 1196: 能でないものもあります.
 1197: 
 1198: @menu
 1199: * Time Components::
 1200: * Date Components::
 1201: * Combined Time Formats::
 1202: @end menu
 1203: 
 1204: @node Time Components
 1205: @subsubsection 時間の内容
 1206: 
 1207: 以下の書式指示語は,時間の単一の内容を出力します.
 1208: 
 1209: @table @code
 1210: @item H
 1211: 時間(00..23)
 1212: @item I
 1213: 時間(01..12)
 1214: @item k
 1215: 時間( 0..23)
 1216: @item l
 1217: 時間( 1..12)
 1218: @item p
 1219: ロケールの午前や午後
 1220: @item Z
 1221: タイムゾーン(例えば,EDT),またはタイムゾーンが定義されていない場合は何
 1222: も出力しない.
 1223: @item M
 1224: 分(00..59)
 1225: @item S
 1226: 秒(00..61)
 1227: @item @@
 1228: 1970年1月1日00:00 GMT以来の秒.
 1229: @end table
 1230: 
 1231: 
 1232: @node Date Components
 1233: @subsubsection 日付の内容
 1234: 
 1235: 以下の書式指示語は,日付の単一の内容を出力します.
 1236: 
 1237: @table @code
 1238: @item a
 1239: ロケールの略記された曜日名(Sun..Sat)
 1240: @item A
 1241: ロケールの完全な曜日名,可変長(Sunday..Saturday)
 1242: @item b
 1243: @itemx h
 1244: ロケールの略記された月名(Jan..Dec)
 1245: @item B
 1246: ロケールの完全な月名,可変長(January..December)
 1247: @item m
 1248: 月(01..12)
 1249: @item d
 1250: 日(01..31)
 1251: @item w
 1252: 曜日(0..6)
 1253: @item j
 1254: 年間の日付(001..366)
 1255: @item U
 1256: 日曜日を週の最初の日とした時の,年間の週数(00..53)
 1257: @item W
 1258: 月曜日を週の最初の日とした時の,年間の週数(00..53)
 1259: @item Y
 1260: 年(1970@dots{})
 1261: @item y
 1262: 年の最後の2桁(00..99)
 1263: @end table
 1264: 
 1265: 
 1266: @node Combined Time Formats
 1267: @subsubsection 時間の書式の組み合わせ
 1268: 
 1269: 以下の書式指示語は,時間と日付の組み合わせを出力します.
 1270: 
 1271: @table @code
 1272: @item r
 1273: 時間,12時間制(hh:mm:ss [AP]M)
 1274: @item T
 1275: 時間,24時間制(hh:mm:ss)
 1276: @item X
 1277: ロケールの時間表現(H:M:S)
 1278: @item c
 1279: ロケールの日付と時間(Sat Nov 04 12:02:33 EST 1989)
 1280: @item D
 1281: 日付(mm/dd/yy)
 1282: @item x
 1283: ロケールの日付表現(mm/dd/yy)
 1284: @end table
 1285: 
 1286: 
 1287: @node Run Commands
 1288: @section コマンドの実行
 1289: 
 1290: @code{find}や@code{locate}で作成されたファイル名のリストを,他のコマンド
 1291: への引数として使用可能です.この方法で,ファイルへの任意の動作を実行する
 1292: ことが可能です.
 1293: 
 1294: @menu
 1295: * Single File::
 1296: * Multiple Files::
 1297: * Querying::
 1298: @end menu
 1299: 
 1300: @node Single File
 1301: @subsection 単一のファイル
 1302: 
 1303: ここに一つのファイルへのコマンドを,一度に実行する方法があります.
 1304: 
 1305: @deffn Action -exec command ;
 1306: @var{command}を実行します.0のステータスが返される場合は真です.
 1307: @code{find}は,@samp{-exec}以降のすべての引数を,@samp{;}から成り立つ引
 1308: 数に到達するまで,コマンドの部分として受けとります.それは,文字列
 1309: @samp{@{@}}を現在のファイル名で置換し,コマンドにそれがある場所で処理さ
 1310: れます.これらの構文はどちらも,シェルによる展開を防ぐために(@samp{\}を
 1311: 用いて)エスケープしたり,引用符で囲む必要があります.コマンドは,
 1312: @code{find} を実行しているディレクトリで実行されます.
 1313: 
 1314: 例えば,現在のディレクトリのそれぞれのCのヘッダファイルを,ファイル
 1315: @file{/tmp/master}と比較するために以下のようにします.
 1316: 
 1317: @example
 1318: find . -name '*.h' -exec diff -u '@{@}' /tmp/master ';'
 1319: @end example
 1320: @end deffn
 1321: 
 1322: 
 1323: @node Multiple Files
 1324: @subsection 複数のファイル
 1325: 
 1326: 単一のファイルを処理する必要がある時もあります.しかし,それができない時,
 1327: ファイル毎にコマンドを実行するより,できるだけ多くのファイルをコマンドで
 1328: 実行した方が速くなります.これを行なうことで,それぞれのコマンドを開始す
 1329: る時間を稼ぐことになります.
 1330: 
 1331: 一度に一つ以上のファイルをコマンドで実行するために,@code{xargs}コマンド
 1332: を使用し,以下のように呼び出して下さい.
 1333: 
 1334: @example
 1335: xargs @r{[}@var{option}@dots{}@r{]} @r{[}@var{command} @r{[}@var{initial-arguments}@r{]}@r{]}
 1336: @end example
 1337: 
 1338: @code{xargs}は標準入力から引数を読み込み,それは空白(それは,ダブルクオー
 1339: トやシングルクオートまたはバックスラッシュで保護可能)や改行で分離されて
 1340: います.それは@var{command} (デフォルトで@file{/bin/echo})を,標準入力か
 1341: ら読み込まれた引数が続くあらゆる@var{initial-arguments}を用いて,一回以
 1342: 上実行します.標準入力の空白行は無視されます.
 1343: 
 1344: 空白の分離名の代わりに,@samp{find -print0}や@samp{find -fprint0}を使用
 1345: し,GNU @code{xargs},GNU @code{tar},GNU @code{cpio},または@code{perl}
 1346: へ,@samp{-0}や@samp{--null}オプションを与えて,出力を処理した方が安全で
 1347: す.
 1348: 
 1349: 以下のように,引数リストを処理するためシェルコマンドの置換(バッククオー
 1350: ト)を使用することが可能です.
 1351: 
 1352: @example
 1353: grep -l sprintf `find $HOME -name '*.c' -print`
 1354: @end example
 1355: 
 1356: しかし,その方法は,@samp{.c}ファイル名の長さが,オペレーティングシステ
 1357: ムのコマンドラインの長さの制限を超過する場合,エラーが生じるでしょう.
 1358: @code{xargs}は,制限を超過しないようにするために必要なだけコマンドを実行
 1359: することで,その問題を避けます.
 1360: 
 1361: @example
 1362: find $HOME -name '*.c' -print | grep -l sprintf
 1363: @end example
 1364: 
 1365: しかし,標準入力が端末であることを必要とするコマンド(例えば,
 1366: @code{less})の場合,シェルコマンドの置換の手法を使用する必要があります.
 1367: 
 1368: @menu
 1369: * Unsafe File Name Handling::
 1370: * Safe File Name Handling::
 1371: * Limiting Command Size::
 1372: * Interspersing File Names::
 1373: @end menu
 1374: 
 1375: @node Unsafe File Name Handling
 1376: @subsubsection 安全でないファイル名の扱い
 1377: 
 1378: ファイル名には,引用符,バックスラッシュ,空白文字,そして改行でさえ含め
 1379: ることが可能なので,処理のデフォルトモードで@code{xargs}を使用しながらそ
 1380: れを処理することは安全ではありません.しかし,ほとんどのファイル名は空白
 1381: を含まないので,この問題は滅多に発生しません.安全なファイル名だと知って
 1382: いるファイルを検索している場合のみ,それについて悩む必要はありません.
 1383: 
 1384: @c This example is adapted from:
 1385: @c From: pfalstad@stone.Princeton.EDU (Paul John Falstad)
 1386: @c Newsgroups: comp.unix.shell
 1387: @c Subject: Re: Beware xargs security holes
 1388: @c Date: 16 Oct 90 19:12:06 GMT
 1389: @c 
 1390: 応用する際は,名前に特殊文字を含んでいるため,@code{xargs}ファイルをうま
 1391: く処理できない場合も多く,失われるデータもあります.この問題の重要性は,
 1392: データの重要性に依存し,それを訂正するためにはできるだけ速く,失ったもの
 1393: に気づくかに依存します.しかし,ここに,空白で分離した名前の使用で引き起
 1394: こされる究極の例があります.以下のコマンドが,毎日@code{cron}で実行され
 1395: る場合,あらゆるユーザはあらゆるファイルを削除可能です.
 1396: 
 1397: @example
 1398: find / -name '#*' -atime +7 -print | xargs rm
 1399: @end example
 1400: 
 1401: 例えば,以下のようなことが可能でしょう.
 1402: 
 1403: @example
 1404: eg$ echo > '#
 1405: vmunix'
 1406: @end example
 1407: 
 1408: @noindent
 1409: @file{/}を現在のディレクトリとして,@code{xargs}を実行してしまった場合,
 1410: そして,@code{cron}は@file{/vmunix}を削除するでしょう.
 1411: 
 1412: 他のファイルを削除するために,例えば@file{/u/joeuser/.plan}は,以下のよ
 1413: うにすることで可能でしょう.
 1414: 
 1415: @example
 1416: eg$ mkdir '#
 1417: '
 1418: eg$ cd '#
 1419: '
 1420: eg$ mkdir u u/joeuser u/joeuser/.plan'
 1421: '
 1422: eg$ echo > u/joeuser/.plan'
 1423: /#foo'
 1424: eg$ cd ..
 1425: eg$ find . -name '#*' -print | xargs echo
 1426: ./# ./# /u/joeuser/.plan /#foo
 1427: @end example
 1428: 
 1429: 
 1430: @node Safe File Name Handling
 1431: @subsubsection 安全なファイル名の扱い
 1432: 
 1433: ここに,@code{find}が出力したファイル名を,他のプログラムでめちゃくちゃ
 1434: にされたり誤解されたりしないで,他のプログラムで使用可能にする方法があり
 1435: ます.この方法で生成されたファイル名に,@samp{-0}や@samp{--null}オプショ
 1436: ンを,GNU @code{xargs},GNU @code{tar},GNU @code{cpio},または,
 1437: @code{perl}に渡すことで,処理することが可能です.
 1438: 
 1439: @deffn Action -print0
 1440: 真です.標準出力の完全なファイル名にヌル文字を続けて出力します.
 1441: @end deffn
 1442: 
 1443: @deffn Action -fprint0 file
 1444: 真です.@samp{-print0}ににていますが,@var{file}を@samp{-fprint}のように
 1445: 書き出します(@pxref{Print File Name}).
 1446: @end deffn
 1447: 
 1448: 
 1449: @node Limiting Command Size
 1450: @subsubsection コマンドサイズの制限
 1451: 
 1452: @code{xargs}で,それぞれの実行時にコマンドに渡す引数の数を制御することが
 1453: できます.デフォルトで,@code{ARG_MAX} - 2k,または20kまでの小さい方を,
 1454: コマンド毎の文字として使用します.それは,制限以内のできるだけ多くの行と
 1455: 引数を使用します.以下のオプションはこれらの値を変更します.
 1456: 
 1457: @table @code
 1458: @item --no-run-if-empty
 1459: @itemx -r
 1460: 標準入力が空白でない文字を含まない場合,コマンドを実行しません.デフォル
 1461: トで,入力が無い場合でもコマンドは一度実行されます.
 1462: 
 1463: @item --max-lines@r{[}=@var{max-lines}@r{]}
 1464: @itemx -l@r{[}@var{max-lines}@r{]}
 1465: 最大@var{max-lines}の空白でない入力行を,コマンドライン毎に使用します.
 1466: 省略された場合,@var{max-lines}のデフォルトは1です.後置される空白は,
 1467: 行を数える目的で,入力行を,次の入力行に論理的に連結します.@samp{-x}を
 1468: 暗黙に指定します.
 1469: 
 1470: @item --max-args=@var{max-args}
 1471: @itemx -n @var{max-args}
 1472: 最大@var{max-args}個の引数を,コマンドライン毎に使用します.大きさが
 1473: @var{max-args}を超過した場合,それより小さいものが使用されますが,それは
 1474: @samp{-x}オプションが与えられていない場合に限り,その場合は@code{xargs}
 1475: は終了します.
 1476: 
 1477: @item --max-chars=@var{max-chars}
 1478: @itemx -s @var{max-chars}
 1479: 最大@var{max-chars}文字を,コマンドライン毎に使用し,それはコマンドと最
 1480: 初の引数と引数文字列の最後の終端のヌルを含みます.
 1481: 
 1482: @item --max-procs=@var{max-procs}
 1483: @itemx -P @var{max-procs}
 1484: @var{max-procs}プロセスまで一度に実行します.デフォルトは1です.
 1485: @var{max-procs}が0の場合,@code{xargs}は可能な限り多くのプロセスを,一度
 1486: に実行します.@samp{-P}とともに,@samp{-n},@samp{-s},または@samp{-l}オ
 1487: プションを使用して下さい.そうしない場合,コマンドが実行される機会は,1
 1488: 度しかありません.
 1489: @end table
 1490: 
 1491: 
 1492: @node Interspersing File Names
 1493: @subsubsection ファイル名をばらまく
 1494: 
 1495: @code{xargs}は,処理するファイル名を,コマンドに対して与えた引数の間に挿
 1496: 入可能です.コマンドの大きさを制限するオプションを与えていない場合
 1497: (@pxref{Limiting Command Size}),このモードの処理は,@samp{find -exec}と
 1498: 等価です(@pxref{Single File}).
 1499: 
 1500: @table @code
 1501: @item --replace@r{[}=@var{replace-str}@r{]}
 1502: @itemx -i@r{[}@var{replace-str}@r{]}
 1503: 最初の引数の@var{replace-str}があるところを,標準入力から読み込まれる名
 1504: 前に置換します.また,引用符で囲まれていない空白は,引数の最後になりませ
 1505: ん.@var{replace-str}が省略された場合,デフォルトは@samp{@{@}}です
 1506: (@samp{find -exec}に似ています).@samp{-x}と@samp{-l 1}を暗黙に指定しま
 1507: す.例えば,@file{bills}ディレクトリのそれぞれのファイルをソートし,出力
 1508: をファイル名に@file{.sorted}を後置したものに書き出す時,以下のようにする
 1509: ことで可能です.
 1510: 
 1511: @example
 1512: find bills -type f | xargs -iXX sort -o XX.sorted XX
 1513: @end example
 1514: 
 1515: @noindent
 1516: @samp{find -exec}を使用した等価のコマンドは以下のようになります.
 1517: 
 1518: @example
 1519: find bills -type f -exec sort -o '@{@}.sorted' '@{@}' ';'
 1520: @end example
 1521: @end table
 1522: 
 1523: 
 1524: @node Querying
 1525: @subsection 問い合わせ
 1526: 
 1527: ユーザに単一のファイル上でコマンドを実行するかどうかを尋ねるため,
 1528: @samp{-exec}の代わりに,@code{find}のプライマリ@samp{-ok}が使用可能です.
 1529: 
 1530: @deffn Action -ok command ;
 1531: @samp{-exec}に似ていますが(@pxref{Single File}),ユーザに(標準入力上で) 
 1532: 最初に尋ねます.応答が@samp{y}や@samp{Y}で始まらない場合,コマンドを実行
 1533: せず,偽を返します.
 1534: @end deffn
 1535: 
 1536: 単一のコマンドで複数のファイルを処理する時,ユーザに問い合わせるため,
 1537: @code{xargs}に以下のオプションを与えます.このオプションを使用する時,コ
 1538: マンドの呼出毎に処理するファイルの数を制御することが役に立つと分かるでしょ
 1539: う.
 1540: 
 1541: @table @code
 1542: @item --interactive
 1543: @itemx -p
 1544: ユーザにそれぞれのコマンドラインを実行するかどうかプロンプトを表示し,端
 1545: 末から1行読み込みます.応答が@samp{y}や@samp{Y}で始まる場合のみコマンド
 1546: ラインを実行します.暗黙に@samp{-t}が指定されます.
 1547: @end table
 1548: 
 1549: 
 1550: @node Adding Tests
 1551: @section テストの追加
 1552: 
 1553: @code{find}の組み込みテストが調査しない,ファイルの属性の調査をすること
 1554: が可能です.こうするために,@code{find}が出力したファイルリストへのフィ
 1555: ルターとなるプログラムを実行するため,@code{xargs}を使用してください.
 1556: @code{xargs}によって実行されるプログラムが行なう仕事を減らすため,リスト
 1557: が少なくなるように,@code{find}の組み込みテストをできるだけ使用して下さ
 1558: い.@code{find}の組み込みテストは,他のプログラムが実行するテストより速
 1559: く実行されるでしょう.
 1560: 
 1561: 例えばここに,@file{/usr/local}ディレクトリツリー内のstripされていないバ
 1562: イナリの,すべての名前を出力する方法があります.組み込みテストは,通常の
 1563: ファイルでないものや,実行可能でないファイルで,@code{file}を実行するこ
 1564: とを避けます.
 1565: 
 1566: @example
 1567: find /usr/local -type f -perm +a=x | xargs file | 
 1568:   grep 'not stripped' | cut -d: -f1
 1569: @end example
 1570: 
 1571: @noindent
 1572: @code{cut}プログラムは,@code{file}の出力からファイル名以降のものすべて
 1573: を削除します.
 1574: 
 1575: @c Idea from Martin Weitzel.
 1576: @code{find}の式の中間のどこかで特殊な調査を配置したい場合,調査を実行す
 1577: るプログラムを実行するために,@samp{-exec} を使用することが可能です.
 1578: @samp{-exec}は,実行されたプログラムの終了ステータスを評価するので,特殊
 1579: な属性を検査するプログラム(それは,シェルスクリプトも可能です)を書くこと
 1580: と,真(ゼロ)や偽(ゼロ以外)のステータスで終了させることが可能です.そのよ
 1581: うな特殊なテストは,新しいプロセスを開始し,組み込みテストが偽と評価する
 1582: 場合は行なわないので,それを組み込みテストの@emph{後で}配置することは良
 1583: い考えです.それぞれのファイルを調査するために,一つ以上の新しいプロセス
 1584: を開始することは,多くのファイルの調査を一つのプロセスで開始する
 1585: @code{xargs}の使用より遅くなるので,この手法は,@code{xargs}の柔軟性が十
 1586: 分でない時にのみ使用して下さい.
 1587: 
 1588: 以下は,引数がstripされているバイナリファイルかどうかを調査する,
 1589: @code{unstripped}という名前のシェルスクリプトです.
 1590: 
 1591: @example
 1592: #!/bin/sh
 1593: file $1 | grep 'not stripped' > /dev/null
 1594: @end example
 1595: 
 1596: このスクリプトは,シェルが実行した最後のプログラムのステータスで終了する
 1597: という事実に依存し,この場合@code{grep}になります.@code{grep}は,あらゆ
 1598: る一致が見つかる場合は真で終了し,それ以外では偽で終了します.ここに(サー
 1599: チパスにあると仮定している)スクリプトを利用している例があります.それは,
 1600: ファイル@file{sbins}内のstripされている実行形式と,@file{ubins}内のstrip 
 1601: されていない実行形式をリストアップします.
 1602: 
 1603: @example
 1604: find /usr/local -type f -perm +a=x \
 1605:   \( -exec unstripped '@{@}' \; -fprint ubins -o -fprint sbins \)
 1606: @end example
 1607: 
 1608: 
 1609: @node Common Tasks, Databases, Actions, Top
 1610: @chapter 一般的な作業
 1611: 
 1612: 以下のセクションは,これらのプログラムの能力に利用する際の良い考えを与え,
 1613: 一般的な現実問題を解説する方法を提示している,拡張された例を含みます.
 1614: 
 1615: @menu
 1616: * Viewing And Editing::
 1617: * Archiving::
 1618: * Cleaning Up::
 1619: * Strange File Names::
 1620: * Fixing Permissions::
 1621: * Classifying Files::
 1622: @end menu
 1623: 
 1624: @node Viewing And Editing
 1625: @section 閲覧と編集
 1626: 
 1627: 特定の基準を満たすファイルのリストを見るために,引数にファイル名を用いて,
 1628: 単純にファイルビューアープログラムを実行してください.シェルは,バックク
 1629: オートで囲まれたコマンドを,その出力に置換するので,コマンド全体はこのよ
 1630: うになります.
 1631: 
 1632: @example
 1633: less `find /usr/include -name '*.h' | xargs grep -l mode_t`
 1634: @end example
 1635: 
 1636: @noindent
 1637: ファイルビューアープログラムの代わりにエディタの名前を与えることで,これ
 1638: らのファイルを編集することも可能です.
 1639: 
 1640: 
 1641: @node Archiving
 1642: @section アーカイブ
 1643: 
 1644: @code{find}で生成したファイルリストを,ファイルアーカイブプログラムに渡
 1645: すことも可能です.GNU @code{tar}と@code{cpio}は,どちらも標準入力からファ
 1646: イル名のリストを読み込むことが可能です---ヌル(安全な方法),または,空白
 1647: (簡単だが危険なデフォルトの方法)のどちらかで分離します.ヌルで名前を分離
 1648: する方法を使用するため,@samp{--null}オプションを与えてください.ファイ
 1649: ルアーカイブをファイルに保存したり,テープに書き出したり,ネットワーク越
 1650: しの他のマシンに展開したりすることも可能です。
 1651: 
 1652: ファイルをアーカイブする一般的な@code{find}の使用方法は,ディレクトリツ
 1653: リー内のファイルリストを@code{cpio}に送る方法です.所有者がディレクトリ
 1654: に書き込み許可が無い場合は@samp{-depth}を使用し,(その場合,)ディレクト
 1655: リの許可はその内容の後でリストアされるため,その内容をアーカイブからリス
 1656: トアすることが可能です.こうするために@code{cpio}使用した例がここにあり
 1657: ます.特定のファイルのみアーカイブするために,より複雑な@code{find}の式
 1658: を使用することも可能です.
 1659: 
 1660: @example
 1661: find . -depth -print0 |
 1662:   cpio --create --null --format=crc --file=/dev/nrst0
 1663: @end example
 1664: 
 1665: 以下のコマンドを使用して,そのアーカイブをリストアすることが可能です.
 1666: 
 1667: @example
 1668: cpio --extract --null --make-dir --unconditional \
 1669:   --preserve --file=/dev/nrst0
 1670: @end example
 1671: 
 1672: 同じことを@code{tar}を使用して行なうコマンドは以下のようになります.
 1673: 
 1674: @example
 1675: find . -depth -print0 |
 1676:   tar --create --null --files-from=- --file=/dev/nrst0
 1677: 
 1678: tar --extract --null --preserve-perm --same-owner \
 1679:   --file=/dev/nrst0
 1680: @end example
 1681: 
 1682: @c Idea from Rick Sladkey.
 1683: 一つのマシンから他のマシンに,ディレクトリをコピーする例は以下のようにな
 1684: ります.
 1685: 
 1686: @example
 1687: find . -depth -print0 | cpio -0o -Hnewc |
 1688:   rsh @var{other-machine} "cd `pwd` && cpio -i0dum"
 1689: @end example
 1690: 
 1691: 
 1692: @node Cleaning Up
 1693: @section クリーンアップ
 1694: 
 1695: @c Idea from Jim Meyering.
 1696: このセクションでは,さまざまな状況で,不要なファイルを削除する例を提供し
 1697: ます.マージの要求で更新された時に作成されるCVSバックアップファイルを
 1698: 削除するコマンドは以下のようになります.
 1699: 
 1700: @example
 1701: find . -name '.#*' -print0 | xargs -0r rm -f
 1702: @end example
 1703: 
 1704: @c Idea from Franc,ois Pinard.
 1705: @file{/tmp}内のゴミファイルをきれいにするためにこのコマンドを実行するこ
 1706: とが可能です.ログアウトする時にシェルがそれを実行するよう,(使用してい
 1707: るシェルに依存しますが,@file{.bash_logout},@file{.logout},または
 1708: @file{.zlogout})ファイルに書き出すことも可能です.
 1709: 
 1710: @example
 1711: find /tmp -user $LOGNAME -type f -print0 | xargs -0 -r rm -f
 1712: @end example
 1713: 
 1714: @c Idea from Noah Friedman.
 1715: 古いEmacsのバックアップファイルと自動保存ファイルを削除するために,以下
 1716: のようなコマンドが使用可能です.VMメーラーのようなEmacsパッケージは,
 1717: @file{#reply to David J. MacKenzie<1>#}のようにスペースを含む一時ファイ
 1718: ルを作成することが多いので,ヌルで終端されているファイル名を使用する方法
 1719: は,この場合には特に重要です.
 1720: 
 1721: @example
 1722: find ~ \( -name '*~' -o -name '#*#' \) -print0 |
 1723:   xargs --no-run-if-empty --null rm -vf
 1724: @end example
 1725: 
 1726: @file{/tmp}から古いファイルを削除するため,通常は@code{cron}から実行しま
 1727: す.
 1728: 
 1729: @c Idea from Kaveh Ghazi.
 1730: @example
 1731: find /tmp /var/tmp -not -type d -mtime +3 -print0 |
 1732:   xargs --null --no-run-if-empty rm -f
 1733: 
 1734: find /tmp /var/tmp -depth -mindepth 1 -type d -empty -print0 |
 1735:   xargs --null --no-run-if-empty rmdir
 1736: @end example
 1737: 
 1738: 上記の2番目の@code{find}コマンドは,空のディレクトリの最初の深度をきれい
 1739: にするため,@samp{-depth}を使用し,それで親が空になり,削除も可能になる
 1740: ことを期待しています.全体が空になった場合,@file{/tmp}自身を削除しない
 1741: ように,@samp{-mindepth}を使用します.
 1742: 
 1743: 
 1744: @node Strange File Names
 1745: @section 奇妙なファイル名
 1746: 
 1747: @c Idea from:
 1748: @c From: tmatimar@isgtec.com (Ted Timar)
 1749: @c Newsgroups: comp.unix.questions,comp.unix.shell,comp.answers,news.answers
 1750: @c Subject: Unix - Frequently Asked Questions (2/7) [Frequent posting]
 1751: @c Subject: How do I remove a file with funny characters in the filename ?
 1752: @c Date: Thu Mar 18 17:16:55 EST 1993
 1753: @code{find}は,名前に奇妙な文字を含むファイルを,削除したり名前を変更し
 1754: たりする手助けにもなります.スペース,タブ,制御文字,またはハイビットセッ
 1755: トを用いた文字のような,もの(文字)を含む名前のファイルに邪魔される時もあ
 1756: ります.そのようなファイルを削除する最も簡単な方法は,以下のようになりま
 1757: す.
 1758: 
 1759: @example
 1760: rm -i @var{some*pattern*that*matches*the*problem*file}
 1761: @end example
 1762: 
 1763: @code{rm}は,与えられたパターンに一致するそれぞれのファイルを削除するか
 1764: どうか尋ねます.古いシェルを使用している場合で,ファイル名にハイビットセッ
 1765: トを用いた文字を含む場合には,この方法は動作しません.シェルはそれを削除
 1766: します.より信頼できる方法は,以下のようになります.
 1767: 
 1768: @example
 1769: find . -maxdepth 1 @var{tests} -ok rm '@{@}' \;
 1770: @end example
 1771: 
 1772: @noindent
 1773: ここでの@var{tests}は,ファイルをユニークに識別します.@samp{-maxdepth
 1774: 1}オプションは,@code{find}があらゆるサブディレクトリのファイルを検索す
 1775: ることで,時間を無駄にすることを妨げます.サブディレクトリが無い場合は省
 1776: 略してもかまいません.問題のファイルをユニークに識別する良い方法は,その
 1777: inodeナンバーを知ることです.以下のように使用します.
 1778: 
 1779: @example
 1780: ls -i
 1781: @end example
 1782: 
 1783: 制御文字を名前に含んでいるファイルを持っていて,そのinodeナンバーが12345 
 1784: だと分かったと仮定します.以下のコマンドは,それを削除するかどうか,プロ
 1785: ンプトを表示します.
 1786: 
 1787: @example
 1788: find . -maxdepth 1 -inum 12345 -ok rm -f '@{@}' \;
 1789: @end example
 1790: 
 1791: ファイル名が奇妙な文字列を含んでいて,出力時にスクリーンが駄目になるため,
 1792: 尋ねられたくない場合は,@samp{-ok}の代わりに@samp{-exec}を使用して下さい.
 1793: 
 1794: そうではなく,ファイルの名前を変更したい場合,@code{rm}の代わりに
 1795: @code{mv}を使用することが可能です.
 1796: 
 1797: @example
 1798: find . -maxdepth 1 -inum 12345 -ok mv '@{@}' @var{new-file-name} \;
 1799: @end example
 1800: 
 1801: 
 1802: @node Fixing Permissions
 1803: @section 許可の修正
 1804: 
 1805: 特定のディレクトリツリーのディレクトリに,誰でも書き込めることを確実にし
 1806: たいと仮定します.ユーザまたはグループ(または両方)の許可が無く,それらの
 1807: 許可を修正する方法がここにあります.
 1808: 
 1809: @example
 1810: find . -type d -not -perm -ug=w | xargs chmod ug+w
 1811: @end example
 1812: 
 1813: @noindent
 1814: ディレクトリが誰でも書き込め@emph{ない}ことを確実にしたい場合,反対の処
 1815: 理も可能でしょう.
 1816: 
 1817: 
 1818: @node Classifying Files
 1819: @section ファイルの分類
 1820: 
 1821: @c Idea from:
 1822: @c From: martin@mwtech.UUCP (Martin Weitzel)
 1823: @c Newsgroups: comp.unix.wizards,comp.unix.questions
 1824: @c Subject: Advanced usage of 'find' (Re: Unix security automating script)
 1825: @c Date: 22 Mar 90 15:05:19 GMT
 1826: ファイルの集合を異なる基準でいくつかのグループに分類したい場合,ファイル
 1827: 上で複数の独立したテストを実行するため,カンマオペレータを使用することが
 1828: 可能です.例えば以下のようにします.
 1829: 
 1830: @example
 1831: find / -type d \( -perm -o=w -fprint allwrite , \
 1832:   -perm -o=x -fprint allexec \)
 1833: 
 1834: echo "Directories that can be written to by everyone:"
 1835: cat allwrite
 1836: echo ""
 1837: echo "Directories with search permissions for everyone:"
 1838: cat allexec
 1839: @end example
 1840: 
 1841: @code{find}は,ディレクトリツリー全体を1度走査する必要があるだけです(そ
 1842: れはその作業で最も時間がかかる部分の一つです).
 1843: 
 1844: 
 1845: @node Databases, File Permissions, Common Tasks, Top
 1846: @chapter ファイル名のデータベース
 1847: 
 1848: @code{locate}で使用されるファイル名のデータベースには,データベースが最
 1849: 後に更新された時の,特定のディレクトリツリー内のファイルのリストが含まれ
 1850: ています.データベースのデフォルトファイル名は,@code{locate}と
 1851: @code{updatedb}がコンフィグレーションされインストールされた時に決定され
 1852: ます.データベースが更新される頻度と,項目に含めるディレクトリは,
 1853: @code{updatedb}が実行される頻度と,その引数に依存します.
 1854: 
 1855: @menu
 1856: * Database Locations::
 1857: * Database Formats::
 1858: @end menu
 1859: 
 1860: @node Database Locations
 1861: @section データベースの位置
 1862: 
 1863: 複数のファイル名のデータベースの存在が可能です.ユーザは,@code{locate} 
 1864: が検索を行なうデータベースを,環境変数やコマンドラインオプションを使用し
 1865: て選択可能です.システム管理者は,デフォルトのデータベースのファイル名,
 1866: データベースを更新する頻度,そして,項目に含めるディレクトリを選択するこ
 1867: とが可能です.ファイル名のデータベースは,@code{updatedb}プログラムで,
 1868: 通常夜に実行され更新されます.
 1869: 
 1870: ネットワーク環境では,ファイルシステムの項目を含めながら,それぞれのルー
 1871: トファイルシステムでデータベースを構築することに意味があります.
 1872: @code{updatedb}は,ネットワークのスラッシングを避けるため,ファイルシス
 1873: テムがローカルディスクにあるファイルサーバの,それぞれのファイルシステム
 1874: で実行されます.@code{updatedb}に,それぞれのデータベースが含んでいる項
 1875: 目のディレクトリを選択させるオプションは以下のとおりです.
 1876: 
 1877: @table @code
 1878: @item --localpaths='@var{path}@dots{}'
 1879: データベースに書き込むネットワーク以外のディレクトリです.デフォルトは
 1880: @file{/}です.
 1881: 
 1882: @item --netpaths='@var{path}@dots{}'
 1883: データベースに書き込むネットワークディレクトリ(NFS,AFS,RFS,等々)です.
 1884: デフォルトはありません.
 1885: 
 1886: @item --prunepaths='@var{path}@dots{}'
 1887: データベースに書き込まないディレクトリで,それ以外は書き込まれます.デフォ
 1888: ルトは,@file{/tmp /usr/tmp /var/tmp /afs}です.
 1889: 
 1890: @item --output=@var{dbfile}
 1891: 構築されるデータベースファイルです.デフォルトはシステムに依存しますが,
 1892: 通常は,@file{/usr/local/var/locatedb}です.
 1893: 
 1894: @item --netuser=@var{user}
 1895: ネットワークディレクトリを検索するユーザで,@code{su}を使用します.デフォ
 1896: ルトは@code{daemon}です.
 1897: @end table
 1898: 
 1899: 
 1900: @node Database Formats
 1901: @section データベースの書式
 1902: 
 1903: ファイル名のデータベースには,データベースが最後に更新された時の,特定の
 1904: ディレクトリツリーのファイルのリストを含まれます.ファイル名のデータベー
 1905: スの書式変更は,異なるバイト順序を用いるマシンでも,データベースの共有が
 1906: 可能となるように,GNU @code{locate}バージョン4.0から開始されました.新し
 1907: いGNU @code{locate}は,新旧両方のデータベースの書式を読み込むことが可能
 1908: です.しかし,古いバージョンの@code{locate}と@code{find}では,新しい書式
 1909: のデータベースを与えられた場合,間違った結果となります.
 1910: 
 1911: @menu
 1912: * New Database Format::
 1913: * Sample Database::
 1914: * Old Database Format::
 1915: @end menu
 1916: 
 1917: @node New Database Format
 1918: @subsection 新しいデータベースの書式
 1919: 
 1920: @code{updatedb}は,4の要素を5にする@footnote{訳注:原文はby a factor of
 1921: 4 to 5}ことでデータベースの大きさが小さくなるように,ファイル名のリスト
 1922: を@dfn{前部圧縮}するために@code{frcode}を実行します.前部圧縮(増分符合化
 1923: としても知られている)は以下のように動作します.
 1924: 
 1925: データベースの項目は,(ユーザの利便性のため,大文字小文字を識別しないで) 
 1926: ソートされているリストです.リストはソートされているので,それぞれの項目
 1927: は,前の項目と同じ接頭辞(最初の文字列)を共有することがよくあります.それ
 1928: ぞれのデータベース項目はオフセットバイトの差分の数で始まっていて,それは
 1929: 前の項目の更に前のものが使用している数以上を使用している,前の項目に前置
 1930: される接頭辞の追加の文字数です@footnote{訳注:この文日本語になっていませ
 1931: ん.原文は,Each database entry begins with an offset-differential count
 1932: byte, which is the additional number of characters of prefix of the
 1933: preceding entry to use beyond the number that the preceding entry is
 1934: using of its predecessor.}.(数は負になることもあるはずです.)それ以降の
 1935: 数は,ヌルで終端されているASCII文字の残りです---共有している接尾辞以降の
 1936: 名前の部分です.
 1937: 
 1938: オフセット差分数がバイト(+/-127)で保存できるものより大きい場合,バイトの
 1939: 値が0x80になり,それ以下の2バイトがその数値になっていて,それはハイバイ
 1940: トを最初(ネットワークバイトの順序)にしたものを用います.
 1941: 
 1942: すべてのデータベースは,@file{LOCATE02}と呼ばれるダミーの項目で始まって
 1943: いて,それは,データベースファイルの書式が正しいことを確認するために,
 1944: @code{locate}が調査するものです.検索時にはその項目は無視されます.
 1945: 
 1946: 最初の(ダミー)項目を,最初のデータベース以外からすべて切り取った場合でも,
 1947: データベースをお互いに連結させることは不可能です.これは,2番目とそれ以
 1948: 降の最初の項目にあるオフセット差分数が間違ってしまうためです.
 1949: 
 1950: 
 1951: @node Sample Database
 1952: @subsection サンプルデータベース
 1953: 
 1954: @code{frcode}へのサンプル入力です.
 1955: @c with nulls changed to newlines:
 1956: 
 1957: @example
 1958: /usr/src
 1959: /usr/src/cmd/aardvark.c
 1960: /usr/src/cmd/armadillo.c
 1961: /usr/tmp/zoo
 1962: @end example
 1963: 
 1964: 共有しているために前置される,最も長い接頭辞の長さは以下のようになります.
 1965: 
 1966: @example
 1967: 0 /usr/src
 1968: 8 /cmd/aardvark.c
 1969: 14 rmadillo.c
 1970: 5 tmp/zoo
 1971: @end example
 1972: 
 1973: 最後のヌルを改行に変更し,バイトを出力可能文字に変更した場合の,
 1974: @code{frcode}からの出力は以下のようになります.
 1975: 
 1976: @example
 1977: 0 LOCATE02
 1978: 0 /usr/src
 1979: 8 /cmd/aardvark.c
 1980: 6 rmadillo.c
 1981: -9 tmp/zoo
 1982: @end example
 1983: 
 1984: (6 = 14 - 8, and -9 = 5 - 14)
 1985: 
 1986: (6 = 14 - 8,そして -9 = 5 - 14)
 1987: 
 1988: 
 1989: @node Old Database Format
 1990: @subsection 古いデータベースの書式
 1991: 
 1992: 古いデータベースの書式は,Unixの@code{locate}と@code{find}プログラム,そ
 1993: して早期のGNUがリリースしたもので使用されています.@code{updatedb}は,
 1994: @samp{--old-format}オプションが与えられた場合,この書式を生成します.
 1995: 
 1996: @code{updatedb}は,古い書式のデータベースを生成するために,@code{bigram} 
 1997: と@code{code}と呼ばれるプログラムを実行します.古い書式は,新しいものと
 1998: 以下の方式で異なります.オフセット差分数バイトで始まりヌルで終るそれぞれ
 1999: の項目の代わりに,-14から14までのオフセット差分数を示している,0から28の
 2000: 値になります.それ以上の大きなオフセット差分数を示すバイト値は,0x1e
 2001: (30)で0x80ではありません.大きな数は,ホストのバイト順でソートされ,それ
 2002: はネットワークバイトの順序である必要はなく,ホストのワード整数の大きさで,
 2003: それは通常4バイトです.その値が14より小さいものは表示されません.データ
 2004: ベースの行には終端バイトがありません.次の行の先頭は,30より小さい値を持
 2005: つバイトで示されます.
 2006: 
 2007: 更に,最初のダミー項目で始まる代わりに,古いデータベース書式は,ファイル
 2008: リストで最も一般的な128のbigramを含んでいる,256バイトの表で始まります.
 2009: bigramは調整されたバイトの組となっています.ハイビットセットを持つデータ
 2010: ベースのバイトは,(ハイビットがクリアされている)bigram表内部の索引です.
 2011: bigramとオフセット差分数の符合化は,これらのデータベースを,新しい書式よ
 2012: り20から25%まで小さくしますが,8ビットクリーンにはなりません.特殊コード
 2013: に使用される範囲にあるファイル名のあらゆるバイトは,データベース内では疑
 2014: 問符に置換され,それは,単一文字に一致するシェルのワイルドカードには一致
 2015: しません.
 2016: 
 2017: 
 2018: @node File Permissions, Reference, Databases, Top
 2019: @chapter ファイルの許可
 2020: 
 2021: @include perm-ja.texi
 2022: 
 2023: 
 2024: @node Reference, Primary Index, File Permissions, Top
 2025: @chapter リファレンス
 2026: 
 2027: 以下は,このマニュアルで示してきたプログラムに対する,コマンドラインの構
 2028: 文の概要です.
 2029: 
 2030: @menu
 2031: * Invoking find::
 2032: * Invoking locate::
 2033: * Invoking updatedb::
 2034: * Invoking xargs::
 2035: @end menu
 2036: 
 2037: @node Invoking find, Invoking locate, , Reference
 2038: @section @code{find}の呼出
 2039: 
 2040: @example
 2041: find @r{[}@var{file}@dots{}@r{]} @r{[}@var{expression}@r{]}
 2042: @end example
 2043: 
 2044: @code{find}は,それぞれのファイル名@var{file}をルートとするディレクトリ
 2045: ツリーを,そのツリーで見つかったそれぞれのファイル上で@var{expression}を
 2046: 評価しながら検索します.
 2047: 
 2048: @code{find}は,最初の引数は式の始まりとなる@samp{-},@samp{(}, @samp{)},
 2049: @samp{,},または@samp{!}で始まると考えます.それ以前のあらゆる引数は検索
 2050: パスで,それ以降のあらゆる引数は式の残りとみなします.パスが与えられてい
 2051: ない場合,現在のディレクトリが使用されます.式が与えられていない場合,式
 2052: @samp{-print}が使用されます.
 2053: 
 2054: @code{find}は,すべてのファイルが正しく処理された場合は0のステータスで,
 2055: エラーが発生した場合は0より大きなステータスで終了します.
 2056: 
 2057: 式に含めることが可能なすべてのテスト,アクション,そしてオプションの概要
 2058: は,@xref{Primary Index}.
 2059: 
 2060: @code{find}は,管理上で使用するため,2つのオプションも認識します.
 2061: 
 2062: @table @code
 2063: @item --help
 2064: コマンドライン引数の書式の概要を出力し,終了します.
 2065: @item --version
 2066: @code{find}のバージョンナンバーを出力し,終了します.
 2067: @end table
 2068: 
 2069: @node Invoking locate, Invoking updatedb, Invoking find, Reference
 2070: @section @code{locate}の呼出
 2071: 
 2072: @example
 2073: locate @r{[}@var{option}@dots{}@r{]} @var{pattern}@dots{}
 2074: @end example
 2075: 
 2076: @table @code
 2077: @item --database=@var{path}
 2078: @itemx -d @var{path}
 2079: デフォルトのファイル名のデータベースを検索する代わりに,@var{path}にある
 2080: ファイル名のデータベースを検索し,それはコロンで分離されたデータベースファ
 2081: イル名のリストになります.環境変数@code{LOCATE_PATH}を検索するデータベー
 2082: スファイルに設定する方法も使用可能です.両方使用されている場合,オプショ
 2083: ンは環境変数に優先します.
 2084: 
 2085: @item --help
 2086: @code{locate}へのオプションの概要を出力し,終了します.
 2087: 
 2088: @item --version
 2089: @code{locate}のバージョンナンバーを出力し,終了します.
 2090: 
 2091: @end table
 2092: 
 2093: @node Invoking updatedb, Invoking xargs, Invoking locate, Reference
 2094: @section @code{updatedb}の呼出
 2095: 
 2096: @example
 2097: updatedb @r{[}@var{option}@dots{}@r{]}
 2098: @end example
 2099: 
 2100: @table @code
 2101: @item --localpaths='@var{path}@dots{}'
 2102: データベースに書き込むネットワーク以外のディレクトリです.デフォルトは
 2103: @file{/}です.
 2104: 
 2105: @item --netpaths='@var{path}@dots{}'
 2106: データベースに書き込むネットワーク(NFS,AFS,RFS,等々.)のディレクトリ
 2107: です.デフォルトはありません.
 2108: 
 2109: @item --prunepaths='@var{path}@dots{}'
 2110: データベースに書き込まないディレクトリで,それ以外は書き込みます.デフォ
 2111: ルトは,@file{/tmp /usr/tmp /var/tmp /afs}です.
 2112: 
 2113: @item --output=@var{dbfile}
 2114: 構築されるデータベースファイルです.デフォルトはシステムに依存しますが,
 2115: 通常は@file{/usr/local/var/locatedb}です.
 2116: 
 2117: @item --netuser=@var{user}
 2118: @code{su}(1)を使用しながら,ネットワークディレクトリを検索するユーザです.
 2119: デフォルトは@code{daemon}です.
 2120: @end table
 2121: 
 2122: @node Invoking xargs, ,  Invoking updatedb, Reference
 2123: @section @code{xargs}の呼出
 2124: 
 2125: @example
 2126: xargs @r{[}@var{option}@dots{}@r{]} @r{[}@var{command} @r{[}@var{initial-arguments}@r{]}@r{]}
 2127: @end example
 2128: 
 2129: @code{xargs}は,以下のステータスで終了します.
 2130: 
 2131: @table @asis
 2132: @item 0
 2133: 成功した場合.
 2134: @item 123
 2135: 1-125のステータスで終了されたコマンドの呼出があった場合.
 2136: @item 124
 2137: コマンドが255のステータスで終了した場合.
 2138: @item 125
 2139: コマンドがシグナルでキルされた場合.
 2140: @item 126
 2141: コマンドが実行不可能な場合.
 2142: @item 127
 2143: コマンドが見つからない場合.
 2144: @item 1
 2145: その他のエラーが発生した場合.
 2146: @end table
 2147: 
 2148: @table @code
 2149: @item --null
 2150: @itemx -0,
 2151: 入力ファイル名を空白の代わりにヌル文字で終端し,引用符とバックスラッシュ
 2152: は特別扱いされません(すべての文字は,文字通りに扱われます).他の引数とし
 2153: て扱われるような,ファイル文字列の終端@footnote{訳注:ファイル名の終端を
 2154: 示す文字のこと.原文は the end of file string.}を使用不可能にします.
 2155: 
 2156: @item --eof@r{[}=@var{eof-str}@r{]}
 2157: @itemx -e@r{[}@var{eof-str}@r{]}
 2158: ファイル文字列の終端を@var{eof-str}に設定します.ファイル文字列の終端が,
 2159: 入力行に現れた場合,残りの入力は無視されます.@var{eof-str}が省略された
 2160: 場合,ファイル文字列の終端はありません.このオプションが与えられていない
 2161: 場合,ファイル文字列の終端はデフォルトで@samp{_}になります.
 2162: 
 2163: @item --help
 2164: @code{xargs}のオプションの概要を出力して,終了します.
 2165: 
 2166: @item --replace@r{[}=@var{replace-str}@r{]}
 2167: @itemx -i@r{[}@var{replace-str}@r{]}
 2168: 最初から存在する引数にある@var{replace-str}を,標準入力から読み込まれた
 2169: 名前に置換します.また,引用符で囲まれていない空白は,引数の終りになりま
 2170: せん.@var{replace-str}が省略されている場合,デフォルトは@samp{@{@}}にな
 2171: ります(@samp{find -exec}に似ています).@samp{-x}と@samp{-l 1}を暗黙に指
 2172: 定します.
 2173: 
 2174: @item --max-lines@r{[}=@var{max-lines}@r{]}
 2175: @itemx -l@r{[}@var{max-lines}@r{]}
 2176: 最大@var{max-lines}の空白でない入力行を,コマンドライン毎に使用します.
 2177: 後置されている空白は,入力行を論理的に次の行に続かせ,それは行を数える目
 2178: 的のためです.@samp{-x}を暗黙に指定します.
 2179: 
 2180: @item --max-args=@var{max-args}
 2181: @itemx -n @var{max-args}
 2182: 最大@var{max-args}の引数を,コマンドライン毎に使用します.@var{max-args} 
 2183: より引数が少ない時は,サイズ(@samp{-s}オプションを参照して下さい)を越て
 2184: いても,@samp{-x}オプションが与えられていない場合はそれが使用され,それ
 2185: 以外では@code{xargs}は終了します.
 2186: 
 2187: @item --interactive
 2188: @itemx -p
 2189: それぞれのコマンドラインを実行するかどうか,ユーザにプロンプトを表示し,
 2190: 端末から一行読み込みます.応答が@samp{y}や@samp{Y}で始まっている場合のみ,
 2191: コマンドラインを実行します.@samp{-t}を暗黙に指定します.
 2192: 
 2193: @item --no-run-if-empty
 2194: @itemx -r
 2195: 標準入力が全く空行を含まない場合,コマンドを実行しません.デフォルトで,
 2196: コマンドは入力が無い場合でも一度実行されます.
 2197: 
 2198: @item --max-chars=@var{max-chars}
 2199: @itemx -s @var{max-chars}
 2200: コマンドと最初からある引数と引数文字列の最後の終端のヌルを含め,最大
 2201: @var{max-chars}文字をコマンドライン毎に使用します.
 2202: 
 2203: @item --verbose
 2204: @itemx -t
 2205: コマンドラインを実行前に標準エラー出力に出力します.
 2206: 
 2207: @item --version
 2208: @code{xargs}のバージョンナンバーを出力し,終了します.
 2209: 
 2210: @item --exit
 2211: @itemx -x
 2212: サイズ(@var{-s}オプションを参照して下さい)を越えた場合,終了します.
 2213: 
 2214: @item --max-procs=@var{max-procs}
 2215: @itemx -P @var{max-procs}
 2216: 一度に@var{max-procs}プロセスまで実行します.デフォルトは1です.
 2217: @var{max-procs}が0の場合,@code{xargs}は一度に実行可能な最大数のプロセス
 2218: を実行します.
 2219: @end table
 2220: 
 2221: 
 2222: @node Primary Index, , Reference, Top
 2223: @unnumbered @code{find}のプライマリの索引
 2224: 
 2225: これは,ファイルを検索するために@code{find}の式を作り上げる,(テスト,ア
 2226: クション,そしてオプション) すべてのプライマリのリストです.式の詳細は,
 2227: @xref{find Expressions}.
 2228: 
 2229: @printindex fn
 2230: 
 2231: @contents
 2232: @bye

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>