如何删除子目录中的文件和文件夹,但跳过删除Ruby中的某些文件名?

时间:2015-06-18 19:36:59

标签: ruby windows

我正在寻找一种方法来删除子目录中的文件,无论深度如何,还要保留不删除的文件排除列表。

排除list = [my.file]

给定文件夹结构(文件夹以/结尾)

one/
  my.file
  two/
    x.x
    x.x
    xxx/
      xx
      my.file
    xxxx/
      xx
删除后

(删除排除列表中的每个文件,如果没有子项,则删除该文件夹)

one/
  my.file
  two/
    xxx/
      my.file

到目前为止,我一直在使用它,但它不会低于第一级

    inside(directory) do
        FileUtils.rm_rf Dir.glob('*').reject { |f| whitelist.include?(f) }
    end

2 个答案:

答案 0 :(得分:3)

FilUtils remove_dir递归删除。

require "fileutils"
FileUtils.remove_dir("the_dir")

虽然没有弱心的白名单 - 一切都消失了。

答案 1 :(得分:1)

尝试:

inside(directory) do
    FileUtils.rm_rf Dir.glob('**/*').reject { |f| whitelist.include?(File.basename(f)) }
end

虽然这可能也会删除目录。在这种情况下,使用File.directory?(f)作为拒绝标准的一部分。