我正在尝试编写一个简单的ruby脚本,它将文件复制到目录的直接子目录中。我怎么才能得到直接的子目录?
答案 0 :(得分:61)
假设你只想要立即子目录,你可以使用Dir['*/']
(结合了Micheal Sepcot和glenra的答案)。
答案 1 :(得分:15)
Dir.glob("**/")
将返回当前目录下所有路径的数组。从那里,您可以过滤列表并使用File.copy(from, to)
答案 2 :(得分:10)
如果您要找到所有立即子目录(只在您所在的位置以下一级),请尝试以下操作:
Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}
那就是:在某个地方更改目录,构造一个在那里找到的文件数组,拒绝那些不是目录的数组元素,并返回结果剔除的arrray。
答案 3 :(得分:0)
在Ruby中处理文件的最好方法是Pathname
。它将来自几个基于文件的模块的类方法组合到一个易于使用的OOP类中。因此,您不需要像使用Dir
或File
那样将值传递到方法中,只需在对象本身上调用该方法即可。
以下是打印直接子目录的方法:
require 'pathname'
puts Pathname('some/directory').children.select(&:directory?)