Ruby/File Directory/Dir
Материал из Wiki.crossplatform.ru
a little more platform independent:
Dir[File.join(File::SEPARATOR, "usr", "bin", "*")]
Dir["mydir/**/*"]
p Dir["mydir/**/*"]
Dir["mydir/**/*file*"]
p Dir["mydir/**/*file*"]
Dir with patterns
Dir["*.data"] # Files with the "data" extension Dir["ruby.*"] # Any filename beginning with "ruby." Dir["?"] # Any single-character filename Dir["*.[ch]"] # Any file that ends with .c or .h Dir["*.{java,rb}"] # Any file that ends with .java or .rb Dir["*/*.rb"] # Any Ruby program in any direct sub-directory Dir["**/*.rb"] # Any Ruby program in any descendant directory
Find all the .rb files in mydir
Dir["mydir/*.rb"]
Find all the "regular" files and subdirectories in mydir.
# This excludes hidden files, and the special directories . and .. Dir["mydir/*"]
Match any of the given strings
Dir["mydir/{text,ruby}*"] # => ["mydir/text_file", "mydir/ruby_script.rb"]
more concise way of getting directory listings is by using Dir"s class array method
Dir["/usr/bin/*"]
Regex-style character classes
Dir["mydir/[rs]*"] # => ["mydir/ruby_script.rb", "mydir/subdirectory"] Dir["mydir/[^s]*"] # => ["mydir/ruby_script.rb", "mydir/text_file"]
Single-character wildcards
Dir["mydir/?ub*"] # => ["mydir/ruby_script.rb", "mydir/subdirectory"] Dir["mydir/.*"] # => ["mydir/.", "mydir/..", "mydir/.hidden_file"]