Dir.glob( pattern, [flags] ) {| filename | block } â nil
Returns the filenames found by expanding pattern which is an
Array
of the patterns or the pattern String
,
either as an array or as parameters to the block. Note that this
pattern is not a regexp (it's closer to a shell glob). See
File::fnmatch
for the meaning of the flags parameter.
Note that case sensitivity depends on your system (so
File::FNM_CASEFOLD
is ignored), as does the order in which the
results are returned.
-
*
-
Matches any file. Can be restricted by other values in the glob.
*
will match all files;c*
will match all files beginning withc
;*c
will match all files ending withc
; and*c*
will match all files that havec
in them (including at the beginning or end). Equivalent to/ .* /x
in regexp. Note, this will not match Unix-like hidden files (dotfiles). In order to include those in the match results, you must use something like"{*,.*}"
. -
**
-
Matches directories recursively.
-
?
-
Matches any one character. Equivalent to
/.{1}/
in regexp. -
[set]
-
Matches any one character in
set
. Behaves exactly like character sets in Regexp, including set negation ([^a-z]
). -
{p,q}
-
Matches either literal
p
or literalq
. Matching literals may be more than one character in length. More than two literals may be specified. Equivalent to pattern alternation in regexp. -
\
-
Escapes the next metacharacter. Note that this means you cannot use backslash in windows as part of a glob, i.e.
Dir["c:\foo*"]
will not work, useDir["c:/foo*"]
instead.
Dir["config.?"] #=> ["config.h"] Dir.glob("config.?") #=> ["config.h"] Dir.glob("*.[a-z][a-z]") #=> ["main.rb"] Dir.glob("*.[^r]*") #=> ["config.h"] Dir.glob("*.{rb,h}") #=> ["main.rb", "config.h"] Dir.glob("*") #=> ["config.h", "main.rb"] Dir.glob("*", File::FNM_DOTMATCH) #=> [".", "..", "config.h", "main.rb"] rbfiles = File.join("**", "*.rb") Dir.glob(rbfiles) #=> ["main.rb", # "lib/song.rb", # "lib/song/karaoke.rb"] libdirs = File.join("**", "lib") Dir.glob(libdirs) #=> ["lib"] librbfiles = File.join("**", "lib", "**", "*.rb") Dir.glob(librbfiles) #=> ["lib/song.rb", # "lib/song/karaoke.rb"] librbfiles = File.join("**", "lib", "*.rb") Dir.glob(librbfiles) #=> ["lib/song.rb"]
Please login to continue.