我正在寻找一种方式,子目录删除文件,无论深度也不断档不删除的排除列表。如何删除子目录中的文件和文件夹,但跳过删除Ruby中的某些文件名?
排除列表= [my.file]
给定文件夹结构(文件夹与/结束)
one/
my.file
two/
x.x
x.x
xxx/
xx
my.file
xxxx/
xx
后删除(每一个文件被删除不在排除列表,如果没有子文件夹被删除)
one/
my.file
two/
xxx/
my.file
我一直USI NG此到目前为止,但不会低于第一级
inside(directory) do
FileUtils.rm_rf Dir.glob('*').reject { |f| whitelist.include?(f) }
end
欢迎来到Stack Overflow。在你说你不想递归删除的注释中,你想*选择性地*删除,而这听起来像你只想删除那些缺少.gitignore文件的目录。如果是这样,请更新您的问题以包含真实需求。因为你的问题与你所说的要求不符,这对那些试图帮助你的人来说是一种误导和沮丧。 –
我的不好,对不起,虽然我把拒绝电话留在命令中让它更清楚一点。我会更新。 – user391986
一些思考是是否使用'Dir.glob( '**/*')'或趁['Find.find'](http://ruby-doc.org/stdlib-2.2.2 /libdoc/find/rdoc/Find.html)方法。在一个复杂的目录结构中,第一个可能需要很长时间才能运行,因为它会通过构建入口数组,然后将其保存在内存中。使用'Find.find'将立即开始处理,并递归下降,将您遇到的目录和文件名一一递交给您。它效率高得多,但写得更复杂一点。我建议使用Find.find。 –