【问题标题】:Ruby - Search and collect files in all directorysRuby - 在所有目录中搜索和收集文件
【发布时间】:2012-03-21 01:51:23
【问题描述】:

我正在尝试使用 ruby​​ 脚本在我的 unix 系统上的所有目录中搜索某种文件类型。我了解以下代码将搜索当前目录中所有以 .pdf 结尾的文件:

my_pdfs = Dir['*pdf']

还有:

my_pdfs = Dir.glob('*.pdf').each do |f|
  puts f
end

但是如何在所有目录和子目录中搜索扩展名为 .pdf 的文件?

【问题讨论】:

  • @Matt 我实际上尝试在那里使用该解决方案,但出现以下语法错误:语法错误,意外'=' 我的第一个假设是我使用的是 ruby​​ 1.9.3,并且发布于 2010 年所以它是 ruby​​ 的早期版本?
  • @MurQuirk 您在哪一行得到语法错误?也许你应该在那里评论你的问题?
  • 对于那些对Searching a folder and all of its subfolders for files of a certain type 的解决方案有疑问的人,在代码的第 5 行,波浪号位于等号运算符之后,而不是之前。所以不是~= 而是=~ 这可能不应该在这里发布,但是一旦我得到50个代表点,我会继续在那里评论它。

标签: ruby


【解决方案1】:

查看Find 模块: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/find/rdoc/Find.html

使用 Dir.glob 不太理想,因为 globbing 处理递归的能力不如 find 之类的东西。

此外,如果您使用的是 *nix 设备,请尝试使用 find 命令。它对于一个班轮非常有用。

【讨论】:

    【解决方案2】:

    可能是这样的:

    pdfs=Dir['/**/*.pdf']
    

    ?

    目前不使用 Linux,所以不知道这是否可行。 ** 语法意味着递归列表。

    【讨论】:

      猜你喜欢
      • 2021-01-25
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2020-05-31
      • 2016-11-29
      相关资源
      最近更新 更多