ruby cookbook -- 使用find,来查找匹配的文件

ruby操作文件,使用find,来查找匹配的文件
6.20
Use the  Find.find method to walk the directory structure and accumulate a list of matching files.

Pass in a block to the following method and it'll walk a directory tree, testing each file against the code block you provide. It returns an array of all files for which the value of the block is true.
require 'find'
module Find
  def match(*paths)
    matched = []
    find(*paths) { |path| matched << path if yield path }
    return matched
  end
  module_function :match
end

Here's what Find.match might return if you used it on a typical disorganized home directory:
Find.match("./") { |p| File.lstat(p).size == 0 }
# => ["./Music/cancelled_download.MP3", "./tmp/empty2", "./tmp/empty1"]

Find.match("./") { |p| ext = p[-4…p.size]; ext && ext.downcase == ".mp3" }
# => ["./Music/The Snails - Red Rocket.mp3",
# => "./Music/The Snails - Moonfall.mp3", "./Music/cancelled_download.MP3"]

Find.match("./") { |p| File.split(p)[1] == "README" }
# => ["./rubyprog-0.1/README", "./tmp/README"]

你可能感兴趣的:(ext,Ruby)