2

この質問および他の 100 の場所では、すべての .svn ディレクトリを削除するためのほとんど同じ Linux ソリューションがあります。パスに空白が含まれるまでは美しく機能します。では、空白を含むディレクトリ内の .svn ファイルを再帰的に削除する手法はありますか? おそらく、答えを引用符で囲むようにfindに指示する方法はありますか?

4

5 に答える 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 に答える