如何在Ruby中获取文件夹中文件的所有文件名

时间:2014-02-09 13:12:36

标签: ruby file hash io directory

我有一个接受文件夹路径的方法,我希望得到所有扩展名为“.yml”的文件名,并将它们添加到对象的哈希中,如下所示:

如果文件名是 saved_file_1.yml - > {saved_file_1 => "saved_file_1.yml"}

4 个答案:

答案 0 :(得分:2)

使用Dir::glob方法,如下所示

Dir.glob("#{path}/*.yml").each_with_object({}) do |filename,hsh|
   hsh[File.basename(filename,'.yml')] = filename
end

答案 1 :(得分:0)

hash = {}
Dir["#{path}/*.yml"].each { |f| hash[File.basename(f,'.yml')] = f }

答案 2 :(得分:0)

要获取匹配文件列表,请使用Dir.glob获取目录中的文件列表,并使用File.extname获取扩展名称

Dir.glob(path_to_folder).select { |file| File.extname(file) == ".yml" }

要将它们转换为您问题中的哈希值,请使用File.basename获取不带扩展名的文件名,并使用Enumerable#each_with_object创建哈希对象

Dir.glob(path_to_folder).each_with_object({}) { |file, hash| hash[File.basename(file, ".yml")] = file }

答案 3 :(得分:0)

另一种方式:

Hash[(d = Dir["#{path}/*.yml"]).map { |f| File.basename(f,".yml") }.zip(d)]