質問

誰がルビーとディレクトリ内のすべてのファイルを削除する方法を知っています。何も隠しファイルが存在しないとき、私のスクリプトがうまく動作しますが(すなわちの.svnファイル)があるとき、私はそれらを削除することはできませんし、RubyはERRNO :: ENOTEMPTYエラーを発生させます。 私はそれを行う方法を教えてください。

役に立ちましたか?

解決

あなたは、特にあなたのsvnファイルを取り除きたい場合は、

、ここでは、ファイルの残りの部分を傷つけることなくそれを行いますスクリプトは次のとおりです。

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

ジャスト(ちょうど_svnするの.svn変更、あなたがasp.netハックと窓にしている場合)お使いのベースのsvnディレクトリにスクリプトを実行すると、それはそれで全部です。

にかかわらず、Dir.globを見上げます。それはあなたの探求のお手伝いをする必要があります。

他のヒント

の.svnは、それがディレクトリだ、ファイルではありません。

のfileutilsに remove_dir のを確認します。

これはおそらくの.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帰属
所属していません StackOverflow
scroll top