# Find

ディレクトリ配下のファイルを探索するためのモジュールです。

## 使い方:

    require "find"

    Find.find('/foo','/bar') {|f| ...}

または

    require "find"

    include Find
    find('/foo','/bar') {|f| ...}

以下は、ruby のアーカイブに含まれるサンプルスクリプト [ruby-src:sample/trojan.rb] をこのモジュールで書き換えたものです。

    #! /usr/bin/env ruby
    require "find"
    # 他人が書き込み可能な危険なコマンドを探す

    for dir in ENV['PATH'].split(File::PATH_SEPARATOR)
      Find::find(dir) do |fpath|
        if File.file?(fpath) and (File.stat(fpath).mode & 022) != 0
          printf("file %s is writable from other users\n", fpath)
        end
      end
    end

## モジュール関数:

`Find.find(dir[, ...]) {|file| }`

  find(1)のようにdir配下のすべてのファイルや ディレクトリを一つずつ引数fileに渡してブロックを実行します。 file に渡される順序は不定です。

  あるディレクトリ配下の探索を省略したい場合

      require 'find'

      Find.find('/tmp') {|f|
        Find.prune if f == "/tmp/bar"
        ...
      }

  のように、Find.pruneを使用します。この例では "/tmp/bar" 配下のファイルやディレクトリを探索しません。`prune` の代わりに next を使用した場合、"/tmp/bar" 自体をスキップする だけで、その配下の探索は続行されます．

`Find.prune`

  Find.findメソッドのブロックにディレクトリが渡されたときにこ のメソッドを実行すると、そのディレクトリ配下の探索を無視します。

## 履歴:

version 1.4 (ruby version 1.6.1)

  ディレクトリのシンボリックリンクを辿らなくなりました。

links: [Find] [manual page] [制御構造]
reverse link: [添付ライブラリ]