Ruby 如何用.directories清空目录

Ruby 如何用.directories清空目录,ruby,Ruby,在Ruby 1.8中,如何删除一些子目录以“.”开头的目录树 例如,我有一个嵌入式Linux文件系统目录,我想清除它。它的一个子目录是./dev/.udev/files Dir[ "{**/*,**/.**,**/.*}" ].sort.reverse.each do | p | puts p if ( ( p != '..' ) and ( p != '.' ) ) then if File.directory? p then Dir.r

在Ruby 1.8中,如何删除一些子目录以“.”开头的目录树

例如,我有一个嵌入式Linux文件系统目录,我想清除它。它的一个子目录是./dev/.udev/files

Dir[ "{**/*,**/.**,**/.*}" ].sort.reverse.each do | p |
    puts p
    if ( ( p != '..' ) and ( p != '.' ) ) then
        if File.directory? p then
            Dir.rmdir p
        else
            File.delete p 
        end
    end
end
这可以识别./dev/.udev/,但不会删除.udev下的文件(或文件和目录)

我意识到我可以残忍地处死

system("rm -Rf *")
来自工作目录,但我想更好地理解globbing方法

提前谢谢!:你可以试试

Dir.glob(".[^.]*")

要删除目录,可以先尝试删除目录中的所有文件,然后执行删除操作,或者可以使用
FileUtils.rm\u rf
。有关更多信息,请参见
FileUtils
doc

Dir[].sort.reverse的目的是先列出最深的文件,然后再列出它们所在的目录。除了glob模式**和*不接受以开头的文件或目录之外,它工作得非常好;这比系统()更干净:D