本文简要介绍ruby语言中 Dir.glob
的用法。
用法
glob( pattern, [flags], [base: path] [, sort: true] ) → array
glob( pattern, [flags], [base: path] [, sort: true] ) { |filename| block } → nil
扩展 pattern
,这是一个模式字符串或模式字符串的 Array
,并返回一个包含匹配文件名的数组。如果给定了一个块,则为每个匹配的文件名调用一次该块,将文件名作为参数传递给该块。
可选的 base
关键字参数指定用于解释相对路径名的基本目录,而不是当前工作目录。由于在这种情况下结果没有以基本目录名称为前缀,因此如果您需要真实路径,则需要在基本目录名称前面加上前缀。
匹配单个通配符或字符集的结果按二进制升序排序,除非 false
作为可选的 sort
关键字参数给出。 Array
的模式字符串和大括号的顺序被保留。
请注意,该模式不是正则表达式,它更接近于 shell glob。有关flags
参数的含义,请参见 File::fnmatch
。区分大小写取决于您的系统(File::FNM_CASEFOLD
被忽略)。
*
-
匹配任何文件。可以被 glob 中的其他值限制。相当于正则表达式中的
/.*/mx
。*
-
匹配所有文件
c*
-
匹配所有以
c
开头的文件 *c
-
匹配所有以
c
结尾的文件 *c*
-
匹配所有包含
c
的文件(包括开头或结尾)。
请注意,这不会匹配类 Unix 隐藏文件(点文件)。为了将它们包含在匹配结果中,您必须使用 File::FNM_DOTMATCH 标志或类似
"{*,.*}"
的标志。 **
-
如果后跟
/
则递归匹配目录。如果此路径段包含任何其他字符,则与通常的*
相同。 ?
-
匹配任何一个字符。相当于正则表达式中的
/.{1}/
。 [set]
-
匹配
set
中的任何一个字符。行为与Regexp
中的字符集完全相同,包括集合否定 ([^a-z]
)。 {p,q}
-
匹配文字
p
或文字q
。相当于正则表达式中的模式交替。匹配文字的长度可能超过一个字符。可以指定两个以上的文字。
\
-
转义下一个元字符。
请注意,这意味着您不能在 windows 上使用反斜杠作为 glob 的一部分,即
Dir["c:\foo*"]
不起作用,请改用Dir["c:/foo*"]
。
例子:
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"]
Dir.glob(["*.rb", "*.h"]) #=> ["main.rb", "config.h"]
Dir.glob("**/*.rb") #=> ["main.rb",
# "lib/song.rb",
# "lib/song/karaoke.rb"]
Dir.glob("**/*.rb", base: "lib") #=> ["song.rb",
# "song/karaoke.rb"]
Dir.glob("**/lib") #=> ["lib"]
Dir.glob("**/lib/**/*.rb") #=> ["lib/song.rb",
# "lib/song/karaoke.rb"]
Dir.glob("**/lib/*.rb") #=> ["lib/song.rb"]
相关用法
- Ruby Dir.getwd用法及代码示例
- Ruby Dir.pos用法及代码示例
- Ruby Dir.chdir用法及代码示例
- Ruby Dir.read用法及代码示例
- Ruby Dir.each_child用法及代码示例
- Ruby Dir.mktmpdir用法及代码示例
- Ruby Dir.entries用法及代码示例
- Ruby Dir.tell用法及代码示例
- Ruby Dir.fileno用法及代码示例
- Ruby Dir.foreach用法及代码示例
- Ruby Dir.children用法及代码示例
- Ruby Dir.pos =用法及代码示例
- Ruby Dir.mkdir用法及代码示例
- Ruby Dir.each用法及代码示例
- Ruby Dir.close用法及代码示例
- Ruby Dir.path用法及代码示例
- Ruby Dir.seek用法及代码示例
- Ruby Dir.to_path用法及代码示例
- Ruby Dir.rewind用法及代码示例
- Ruby Digest.update用法及代码示例
- Ruby DigestIO.digests用法及代码示例
- Ruby DigestIO.wrap用法及代码示例
- Ruby Digest模块用法及代码示例
- Ruby DidYouMean模块用法及代码示例
- Ruby Digest.<<用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Dir.glob。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。