复制以 Ruby 中的字符开头的文件夹

Copy folders which starts with character in Ruby

如何复制仅以字母而非数字开头的文件夹。我正在尝试

  Dir.glob("folderpath/[a-z]").each do|f|
    FileUtils.cp_r f, "dest"
  end

Dir glob 期望匹配整个名称(与正则表达式不同)。

所以,你需要做:

Dir.glob("folderpath/[a-z]*").each{|f|FileUtils.cp_r(f,"dest")}

(如果愿意,可以使用 do 语法)

https://ruby-doc.org/core-3.0.0/Dir.html#method-c-glob

请注意,如果底层文件系统不区分大小写,则匹配不区分大小写,尽管模式是小写的。

例如,在 mac 上它匹配 README 等

如果您更喜欢正则表达式,或者需要更复杂的测试,您可以使用:

Dir.foreach("folderpath").
  select{|n|n.match(/^[a-z]/)}.
  map{|n|File.join("folderpath",n)}.
  each{|f|FileUtils.cp_r(f,"dest")}

这里我们使用正则表达式。请注意,即使底层文件系统不区分大小写,它也区分大小写。如果需要,在最后一个 / 之后添加 i 以不区分大小写。 map这里是添加文件夹路径,这样就可以添加cp_r