繁体   English   中英

删除Ruby中的隐藏文件

[英]Delete hidden files in Ruby

有谁知道如何用Ruby删除目录中的所有文件。 当没有隐藏文件,但是有隐藏文件(即.svn文件)时,我的脚本运行良好,我无法删除它们,并且Ruby引发Errno :: ENOTEMPTY错误。 我怎么做 ?

.svn不是文件,而是目录。

FileUtils中检出remove_dir

如果您特别想摆脱svn文件,请使用以下脚本来执行此操作,而不会损害其余文件:

require 'fileutils'
directories = Dir.glob(File.join('**','.svn'))
directories.each do |dir|
    FileUtils.rm_rf dir
end

只需在基本svn目录中运行脚本即可,仅此而已(如果您使用asp.net hack在Windows上,只需将.svn更改为_svn)即可。

无论如何,请查找Dir.glob。 它应该可以帮助您完成任务。

.svn是隐藏的,这可能与事实无关。 该错误提示您正在尝试删除一个非空目录。 您需要先删除目录中的所有文件,然后才能删除目录。

是的,您可以使用FileUtils.remove_dir path删除(隐藏)目录。

我碰巧只是写一个脚本来递归删除目录中的所有.svn文件。 希望能帮助到你。

#!/usr/bin/ruby
require 'fileutils'
def svnC dir

    d = Dir.new(dir)
    d.each do |f|
            next if f.eql?(".") or f.eql?("..")
            #if f is directory , call svnC on it
            path = dir + "/" + "#{f}"
            if File.stat(path).directory?
                    if  f.eql?(".svn")
                            FileUtils.remove_dir path
                    else
                            svnC path
                    end
            end
      end

 end

 svnC FileUtils.pwd 

正如@evan所说的,你可以做

require 'fileutils'
Dir.glob('**/.svn').each {|dir| FileUtils.rm_rf(dir) }

或者您可以将其设置为一个衬板,然后从命令行执行它

ruby -e "require 'fileutils'; Dir.glob('**/.svn').each {|dir| FileUtils.rm_rf(dir) }"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM