この質問および他の 100 の場所では、すべての .svn ディレクトリを削除するためのほとんど同じ Linux ソリューションがあります。パスに空白が含まれるまでは美しく機能します。では、空白を含むディレクトリ内の .svn ファイルを再帰的に削除する手法はありますか? おそらく、答えを引用符で囲むようにfindに指示する方法はありますか?
5 に答える
4
find
アクションで改行の代わりに出力区切り文字としてnullを使用するように指示できます-print0
。
次に、引数xargs
の入力区切り文字としてnullを使用するように指示できます。-0
例:
find . -name '*.svn' -print0 | xargs -0 -I{} rm \'{}\'
xargsの引数は、標準入力からの現在の行-I{}
に置き換えるように指示します。{}
個人的には、念のため、ファイル名の前後に円記号でエスケープされた引用符を含めるのが好きです。
于 2012-12-13T14:41:45.083 に答える
0
必要なのがリポジトリのクリーンコピーである場合、SVNexport
コマンドの使用を想定しましたか?
次に、名前にスペースが含まれているがフォルダがないディレクトリを含む、リポジトリに存在するすべてのディレクトリのコピーを取得し.svn
ます。
于 2012-12-13T16:06:42.040 に答える
0
はい、引用符で囲むとうまくいくようです。
mkdir "x y"
mkdir x\ y/.svn
find . -name '.svn' | awk '{print "rm -rf \""$0"\""}' | bash
そして最後に:
ls x\ y
total 8
drwxrwxr-x 6 dylan dylan 4096 Dec 13 06:09 ..
drwxrwxr-x 2 dylan dylan 4096 Dec 13 06:11 .
于 2012-12-13T14:13:26.697 に答える
0
find . -type d -name '.svn' -delete
GNU findの現在のバージョンでは、「-delete」アクションが追加されました。
于 2012-12-13T14:52:14.283 に答える