我正在寻找一种方法来删除子目录中的文件,无论深度如何,还要保留不删除的文件排除列表。
排除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
答案 0 :(得分:3)
答案 1 :(得分:1)
尝试:
inside(directory) do
FileUtils.rm_rf Dir.glob('**/*').reject { |f| whitelist.include?(File.basename(f)) }
end
虽然这可能也会删除目录。在这种情况下,使用File.directory?(f)
作为拒绝标准的一部分。