我希望我的厨师食谱删除与某个正则表达式匹配的所有文件。怎么办呢?
答案 0 :(得分:10)
根据您的使用情况,以前的答案可能有效。但是,使用bash的本机删除功能并不是跨平台的。此外,根据您对资源的控制程度,您可能希望使用更类似Ruby的方法:
Dir["/path/to/folder/{YOUR_REGEX}"].each do |path|
file ::File.expand_path(path) do
action :delete
end
end
这将在资源集合中为与正则表达式匹配的每个文件创建唯一条目。它也是幂等的(意思是如果文件已被删除则不会运行)和跨平台(它也适用于Windows)。
答案 1 :(得分:2)
您要执行此操作的方案是清除先前版本的配方中安装/设置的文件。
我发现这本食谱为这些清理目的提供了一些有用的食谱:https://github.com/nvwls/zap
zap_directory '/etc/sysctl.d' do
pattern '*.conf'
end
zap_crontab 'root' do
pattern 'test \#*'
end
zap_users '/etc/passwd' do
# only zap users whose uid is greater than 500
filter { |u| u.uid > 500 }
end
答案 2 :(得分:-1)
您可以在食谱中使用execute
资源:
execute "Deleting files ... " do
command "find . -regex 'REGEX' -delete"
cwd "/path/to/folder"
action :run
end
该命令需要具有find
命令的目标系统。