#!/usr/bin/ruby # ## http://rosettacode.org/wiki/Walk_a_directory/Recursively # func traverse(Block callback, Dir dir) { dir.open(\var dir_h) || return nil; dir_h.entries.each { |entry| if (entry.is_a(Dir)) { traverse(callback, entry); } else { callback(entry); } } } var dir = Dir.cwd; var pattern = /sierpinski/; # display files that contain 'sierpinski' traverse( { |file| if (file.basename ~~ pattern) { say file; } } => dir );