本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。