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