ruby - 如何遍历两个目录

标签 ruby

我怀疑这就是为什么我可能会通过文件比较多次执行文件的原因

我有两个目录:directory1 包含文件 foo.txtbar.txtdirectory2 包含文件 foo.txtbar.txt

def process(directory1, directory2)
  Dir.foreach(directory1) do |file1|
    Dir.foreach(directory2) do |file2|
      puts file1 + file2
    end
  end
end

当我运行它时,我得到:

..
...
.foo.txt
.bar.txt
...
....
..foo.txt
..bar.txt
foo.txt.
foo.txt..
foo.txtfoo.txt
foo.txtbar.txt
bar.txt.
bar.txt..
bar.txtfoo.txt
bar.txtbar.txt

它应该只打印四个名字。我的循环错了吗?

最佳答案

要回答标题中的实际问题,您可以使用 Dir::[] 遍历 2 个目录例如

Dir['/directory1/*','/directory2/*'] 

这将返回直接位于 /directory1/directory2 下的文件和目录的 Array此外,这将忽略点文件。

参见 Dir#glob用于其他模式选项,例如递归 (**)。

关于ruby - 如何遍历两个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35993819/

相关文章:

iphone - '惰性符号绑定(bind)失败 : Symbol not found: __OSSwapInt16' on jailbroken iPhone when using gem commands

ruby-on-rails - Ruby on Rails SaaS 应用程序从哪里开始,使用什么工具

ruby - Cucumber:自动创建步骤文件?

ruby - 如何使用 gsub 提取 youtube 视频的 ID?

Ruby:如何遍历可能是也可能不是数组的对象?

ruby-on-rails - RSpec load_missing_constant,期望 X 定义 Y(确实如此)

ruby - 使用 Selenium Ruby Webdriver 比较两个图像

javascript - 是否有用于在 JavaScript 中生成概率分布的科学库?

ruby - 数字上的 .size 在 ruby​​ 中是什么意思?

ruby - ssl`sysread_nonblock' : end of file reached (EOFError)