如何打印目录和文件列表并排除目录名称?

时间:2016-03-11 18:04:11

标签: ruby

我正在尝试写出给定文件夹中的目录列表。这是我正在使用的代码:

 Dir.glob("**/*").each do |fname|
        puts "<file href=\"#{fname}\" />"
 end

这是输出:

<file href="css" />
<file href="css/site.css" />
<file href="css/specific-tweaks.css" />
<file href="css/videojs.css" />

我想要排除目录名称。预期产出:

 <file href="css/site.css" />
 <file href="css/specific-tweaks.css" />
 <file href="css/videojs.css" />

2 个答案:

答案 0 :(得分:1)

只需检查它是否是文件。

Dir.glob("**/*").each do |fname|
  puts "<file href=\"#{fname}\" />" if File.file?(fname)
end

答案 1 :(得分:0)

我建议在{Dir}上使用Find.find。它的效率和可扩展性更高一些。

the documentation中的示例显示了您的需求:

  

Find模块支持自上而下遍历一组文件路径。

     

例如,要总计主目录下所有文件的大小,忽略“dot”目录中的任何内容(例如$ HOME / .ssh):

require 'find'

total_size = 0

Find.find(ENV["HOME"]) do |path|
  if FileTest.directory?(path)
    if File.basename(path)[0] == ?.
      Find.prune       # Don't look any further into this directory.
    else
      next
    end
  else
    total_size += FileTest.size(path)
  end
end