我正在尝试写出给定文件夹中的目录列表。这是我正在使用的代码:
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" />
答案 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