2012-12-13 22 views
2

this question和其他一百個地方,大多數情況下用於刪除所有.svn目錄的Linux解決方案相同。它的工作很好,直到路徑碰巧包含空白。那麼,是否有一種技術遞歸地刪除包含空格的目錄中的.svn文件?也許一種告訴發現將其答案用引號括起來的方法?刪除嵌入空白的路徑中的所有.SVN文件夾

回答

4

你可以告訴find使用null作爲輸出分隔符,而不是與-print0行動換行符。

然後你可以告訴xargs使用null作爲輸入分隔符和-0參數。

例如:

find . -name '*.svn' -print0 | xargs -0 -I{} rm \'{}\' 

-I{}參數xargs的告訴它與來自標準輸入的當前行替換{}。並且我個人喜歡在文件名周圍包含反斜槓引號,以加倍確定。

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 . 
0
find . -type d -name '.svn' -delete 

當前的GNU find版本都獲得了 「-delete」 行動。

+0

這是否也刪除了導演上的工作? – anishsane

+0

是的,它的確如此。在我的代碼示例中,我通過「-type d」顯示了這一點,這意味着目錄。 – Perleone

1
find . -name '*.svn' | while read x; do rm -r "$x" ; done 
+0

我一直忘記管道會餵養閱讀的。 –

0

如果你需要的是你的存儲庫的乾淨版本,你有沒有想過使用SVN export command

然後,您將獲得存儲庫中所有目錄的副本,包括名稱中包含空格的目錄,但不包含任何.svn文件夾。

+0

我的項目是從另一家公司購買的。嗨.svn目錄是針對不同的服務器。 –