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.
Here's what Find.match might return if you used it on a typical disorganized home directory:
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"]