Chef:如何在保留某些文件的同时递归删除所有文件

Chef: how to recursively delete all files while keeping certain files

我有这样的文件夹结构:

/app
    /uploads
        1.pdf
        2.pdf
        /2015
        /2016
        /2017
        ......
    /requirements
    /tests
    manage.py
    ......

我曾经递归删除app字典。现在我想将所有折叠和文件保存在 uploads 中,例如。 /2015/2016/2016/oct.pdf。另外,删除 1.pdf2.pdf.

# remove the code folder if exists
directory node['conf-cookbook']['app_dir'] do
   recursive true
   action :delete
   only_if { ::File.directory?("#{ PATH }") }
end

如何构建守卫来实现我的目标?

这不是目录资源可以做的事情。保护条款控制整个资源是否激活,它们不是聚合期间的行项目否决权。您需要制作自定义资源,或者只使用 execute "find #{node['conf-cookbook']['app_dir']} -somefilter -delete" 之类的东西而不关心它不是幂等的。