在Ruby中删除目录是一种多么安全和简单的方法?
我想删除一个可能包含或不包含文件或其他目录的目录。查找我找到的Ruby文档,但它不会删除非空目录。有没有一个方便的方法让我这么做?或者我需要编写一个递归方法来检查目录下的所有内容吗?最懒的方法是:在Ruby中删除目录是一种多么安全和简单的方法?,ruby,Ruby,我想删除一个可能包含或不包含文件或其他目录的目录。查找我找到的Ruby文档,但它不会删除非空目录。有没有一个方便的方法让我这么做?或者我需要编写一个递归方法来检查目录下的所有内容吗?最懒的方法是: def delete_all(path) `rm -rf "#{path}"` end 纯Ruby方式: 需要“fileutils” FileUtils.rm_rf(“/directory/to/go”) 如果需要线程安全:(警告,更改工作目录) 如果有人在@ferventcoder com
def delete_all(path)
`rm -rf "#{path}"`
end
纯Ruby方式:
需要“fileutils”
FileUtils.rm_rf(“/directory/to/go”)
如果需要线程安全:(警告,更改工作目录)
如果有人在@ferventcoder comment上寻找答案,则FileUtils.rm\u rf(“directory/to/go”,:secure=>true)-
请注意,我发现在Windows和Ruby 1.9.3(至少)下,FileUtils.rm_rf将跟随链接(本例中为符号链接)并删除这些文件和文件夹。这是基于使用createSymbolicLink创建符号链接,然后针对符号链接所在的父目录运行FileUtils.rm_rf而发现的。不完全是预期的行为 –费文特编码器 最安全的方法是迭代路径并手动删除它 def rec_del(路径):
请注意,这些文档中包含一条警告:如果您未通过:secure as option to rm_rf,您可能会暴露一个漏洞。@BKewl关于这一点的参考?@alex0112:请参阅并注意,我发现在Windows和Ruby 1.9.3(至少)
FileUtils中,rm_rf
将跟随链接(本例中为符号链接)并删除这些文件和文件夹。这是基于使用createsymbolicinkw
创建符号链接,然后针对符号链接所在的父目录运行FileUtils.rm\u rf
发现的。不完全是预期的行为。有没有办法不删除符号链接的目标,而只删除链接文件本身?在Windows上不起作用。不必要地启动两个子流程(shell和rm
本身)。只返回错误代码,而不是可能更详细的异常消息。(你可能想删除这个答案,@AnaBetts。)至少它可以在不需要ruby>=2.3.0的情况下工作。对于需要支持的不同操作系统变体,也可以实现类似的逻辑FiileUtils要求>=2.3.0,这不是所有平台上都可用的标准软件包,例如centos 7
require 'fileutils'
FileUtils.rm_rf(dir)