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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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.