Dir.delete("/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh")
导致此错误:
目录不为空 -
/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh
如果目录仍包含文件,如何删除目录?
答案 0 :(得分:50)
Dir
是不可能的(除了自己迭代目录或使用Dir.glob并删除所有内容之外)。
你应该使用
require 'fileutils'
FileUtils.rm_r "/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh"
答案 1 :(得分:6)
当您使用Dir.delete
删除目录时,它还会在子目录中搜索文件。
Dir.delete("/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh")
如果目录不为空,则会引发Directory not empty
错误。因为ruby有FiltUtils.rm_r
方法,无论如何都会删除目录!
require 'fileutils'
FileUtils.rm_r "/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh"
答案 2 :(得分:0)
我直接使用bash system(*args)
命令:
folder = "~/Downloads/remove/this/non/empty/folder"
system("rm -r #{folder}")
它不是特定的ruby,但由于bash在这种情况下更简单,我经常使用它来清理临时文件夹和文件。 rm
命令只删除你给它的任何内容,-r
标志告诉它在文件夹不为空的情况下递归删除文件。