#author("2016-11-20T12:28:37+09:00","default:wikiwriter","wikiwriter") #author("2016-12-16T14:42:29+09:00","default:wikiwriter","wikiwriter") *目次 [#yf689441] #contents *ファイル一覧取得 [#ra838a88] **Dir::globを使う [#l759e827] *** /tmpに含まれるjpgファイル全てをフルパスの配列として取得する。 [#u976fc5f] -一つの拡張子 p Dir.glob("/tmp/*.jpg") => ["d:/temp/empty.jpg", "d:/temp/ipad.jpg"] -複数の拡張子 Dir.glob("*.{htm,html}") *** globの引数 [#o29f25e8] ワイルドカードを指定できる(正規表現ではない)。 :*|空文字列を含む任意の文字列と一致。 :?|任意の一文字と一致。 :[ ]|括弧内のいずれかの文字と一致。 :{ }|コンマで区切られた文字列の組合せに展開。 :**/|ディレクトリを再帰的にたどってマッチを行う。 **Dir::entriesを使う [#x97c13e8] *** /tmpに含まれるファイル全てを配列として取得する。 [#q384f8b9] p Dir::entries("d:/temp") => [".", "..", "empty.jpg", "ipad.jpg"] 戻り値はファイル名のみ。 *** /tmpに含まれるファイル全てをフルパスの配列として取得する。 [#n3c9237c] dir = "d:/temp/" p Dir.entries(dir).collect{|f| dir + f} => ["d:/temp/.", "d:/temp/..", "d:/temp/empty.jpg", "d:/temp/ipad.jpg"] *** /tmpに含まれるjpgファイル全てをフルパスの配列として取得する [#yf50238d] dir = "d:/temp/" p Dir.entries(dir).grep(/\.jpg$/) {|f| dir + f} => ["d:/temp/empty.jpg", "d:/temp/ipad.jpg"] *** /tmpに含まれるjpg,pngファイル全てをフルパスの配列として取得する [#x54e91b9] grepに渡す正規表現を工夫すればよい。 dir = "d:/temp/" p Dir.entries(dir).grep(/\.(jpg|png)$/) {|f| dir + f} => ["d:/temp/abc.png", "d:/temp/empty.jpg", "d:/temp/ipad.jpg"]