中给出的目录获取文件信息一直在为学校开发一个程序,并且需要帮助获取一些片段。从命令行参数
目标是接受任何目录的命令行参数,并显示有关每个具有扩展名的文件的一些信息。我主要工作,但需要一些额外的帮助。
的文件只需要一对夫妇更多的事情:
- 集团的扩展和计数。
- 接受多个参数,并且如果没有给定,则默认为当前目录。
- 计算每个的数量/显示总大小/并在显示错误时给出显示错误,如果该目录不存在或者我无法访问它。
目前,它确实从目录中获取文件,显示扩展名并放出文件的大小。下面是我迄今为止编写的代码:
directory=ARGV[0]
searchstring= Regexp.new "(\\.[^.]+)$"
if File.exists? File.expand_path(directory)
Dir["#{File.expand_path(directory)}/*"].each.map { |f| File.basename(f)
if File.basename(f)=~searchstring
puts "Extension: #{File.extname(f)} Count: Size: #{File.stat(f).size}"
end
}
else
puts "This directory does not exist"
end
输出看起来像这样至今:
Extension: .rb Count: Size: 104
Extension: .rb Count: Size: 381
Extension: .xml Count: Size: 84252
Extension: .rb Count: Size: 107
Extension: .rb Count: Size: 377
Extension: .sql Count: Size: 1763
Extension: .rb Count: Size: 123
Extension: .rb Count: Size: 189
Extension: .db Count: Size: 10240
Extension: .rb Count: Size: 791
编辑:我如果目录存在,它检查。我将在上面粘贴我的新代码。尽管如此,仍然需要其他帮助。特别是将扩展存储为一个组(hash?)。
我已经尝试了多次迭代的ARGV.each做,但我无法让它循环通过多个命令行参数,不管我做什么尝试。 我还没有看到给定参数中的所有子目录。 –
我已经回滚编辑了一下,尽量避免用答案更新你的问题,而是投票有用的答案,并接受最有帮助的答案。通过这种方式,未来的读者可以看到您遇到了哪些问题以及彼得如何能够帮助您,而不是仅仅看到彼得的答案与问题中发布的代码完全相同。如果您还有其他问题,请考虑发布一个新问题并链接回这个问题,如果需要额外的上下文 –
感谢Simple Lime。我以为我正在通过更新来帮忙。我将为未来的问题记住这一点。我可能会在明天发布一个更新的问题,然后回到这个问题。 –