`
orcl_zhang
  • 浏览: 242355 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    博客分类:
  • ruby
阅读更多
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"]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics