Does anyone know if there's an existing module/function inside Ruby to traverse file system directories and files? I'm looking for something similar to Python's os.walk
. The closest module I've found is Find
but requires some extra work to do the traversal.
The Python code looks like the following:
for root, dirs, files in os.walk('.'):
for name in files:
print name
for name in dirs:
print name
os. walk() will traverse this directory tree using the depth-first search algorithm.
Python method walk() generates the file names in a directory tree by walking the tree either top-down or bottom-up.
Find seems pretty simple to me:
require "find"
Find.find('mydir'){|f| puts f}
The following will print all files recursively. Then you can use File.directory? to see if the it is a directory or a file.
Dir['**/*'].each { |f| print f }
require 'pathname'
def os_walk(dir)
root = Pathname(dir)
files, dirs = [], []
Pathname(root).find do |path|
unless path == root
dirs << path if path.directory?
files << path if path.file?
end
end
[root, files, dirs]
end
root, files, dirs = os_walk('.')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With