次: Filesystems, 前: Contents, 上: Finding Files
ディレクトリでのfind
の検索を制御し,それらを検索する方法がここに
あります.これらの二つのオプションで,ディレクトリツリーを輪切りにする
処理が可能となります.
コマンドライン引数以下の,最大levels (正の整数)のレベルのディレク トリまで下ります.`-maxdepth 0'はコマンドライン引数のみ,テストと アクションを適用することを意味します.
levels (正の整数)未満のレベルではテストもアクションも適用しません. `-mindepth 1'はコマンドライン引数以外のすべてのファイルを処理する ことを意味します.
ディレクトリ自身の前に,それぞれのディレクトリの内容を処理します.
cpio
やtar
でファイルのリストを生成する時,これを行なうのは 良い考えです.ディレクトリにその所有者に対する書き込み権限がない場合, ディレクトリの権限はその内容の後で復元されるため,その内容はアーカイブ から復元することが可能です.
これは,`-depth'の推奨されない同意語で,Mac OS X,FreeBSD,そして OpenBSDとの互換性が目的です.`-depth'オプションはPOSIXの機能なので, そちらを使用したほうが良いでしょう.
ファイルがディレクトリの場合,その中まで下って行きません.結果は真です. 例えば,ディレクトリsrc/emacsと,そのすべてのファイルと,それ以 下のディレクトリを省略し,それ以外で見つかったファイルの名前を出力する ために以下のようにします.
find . -wholename './src/emacs' -prune -o -print上記のコマンドでは,結果リストに./src/emacsを出力しません.しか し,これは`-prune'の動作の影響が原因ではありません(それ以上,下っ て行くのを避けるだけで,その項目を確実に無視するわけではありません).そ うではなく,これは`-o'を使用していることが原因です.左側の“or”条 件が./src/emacsで成功しているので,この指定しているファイルに対 する右側の評価(`-print')が不要になります.ディレクトリ名を出力した い場合,さらに`-print'アクションを使用します.
find . -wholename './src/emacs' -prune -print -o -printまたは,カンマ・オペレータを使用します.
find . -wholename './src/emacs' -prune , -print`-depth'オプションの影響がある場合,サブディレクトリはあらゆる状況 で調査されています.このため,`-prune'に効果はありません.
すぐに修了します(エラーが無ければ,ゼロの値を返します).実行中の子プロ セスは無く,コマンドラインで指定されたパスの処理も無い状態になります. 例えば,
find /tmp/foo /tmp/bar -print -quit
では`/tmp/foo'だ けを出力します.
ディレクトリが,ハードリンクの数より二つ少ないサブディレクトリを含むこ とを仮定することで,最適化を行ないません.このオプションは,CD-ROMや MS-DOSファイルシステムやAFSボリュームマウントポイントといった,Unixのディ レクトリリンクの規約に従わないファイルシステムを検索する時に必要です. 通常のUnix のファイルシステムのそれぞれのディレクトリは,少なくとも二つ のハードリンクがあります.その名前とその.エントリです.更に,そ のサブディレクトリ(が存在する場合)には,そのディレクトリにリンクしてい る..エントリが,それぞれにあります.
find
がディレクトリを 調査している時,ディレクトリのリンク数よりサブディレクトリが二つ少ない ことがはっきりした後で,それはディレクトリのエントリの残りがディレクト リでない(ディレクトリ内のleafツリー)ことが分かります.ファイルの 名前のみ調査に必要な場合は,それらをはっきりさせる必要はありません.こ れで検索スピードが飛躍的に増加します.
ディレクトリから読み込まれた名前のファイルが,
find
がstat
でファイルを調査する前に見つからない場合,エラーメッセージを出力しませ ん.このオプションを指定していない場合,エラーメッセージが出力されます. 頻繁に変更されるファイルシステム領域(メールのキュー,テンポラリ・ディレ クトリ等)を調査するシステムスクリプト(例えばcronスクリプト)では,このオ プションは役に立ち,その理由は,このような種類のディレクトリではよくあ ることだからです.find
からのエラーメッセージを完全に無くすことは 望まないので,このオプションは,うまく問題を解決します.しかし,ファイ ルシステムの一部はこのオプションをオンにし,一部ではこのオプションをオ フにして検索する方法はありません.