質問
誰がルビーとディレクトリ内のすべてのファイルを削除する方法を知っています。何も隠しファイルが存在しないとき、私のスクリプトがうまく動作しますが(すなわちの.svnファイル)があるとき、私はそれらを削除することはできませんし、RubyはERRNO :: ENOTEMPTYエラーを発生させます。 私はそれを行う方法を教えてください。
解決
、ここでは、ファイルの残りの部分を傷つけることなくそれを行いますスクリプトは次のとおりです。
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) }"