【问题标题】:Copy folders which starts with character in Ruby复制Ruby中以字符开头的文件夹
【发布时间】:2021-12-08 07:03:44
【问题描述】:

如何复制仅以字母开头而不以数字开头的文件夹。我正在尝试类似的东西

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

【问题讨论】:

  • 也许Dir.glob("folderpath/[a-z]*").each ...

标签: ruby directory copy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多