2012-01-11 212 views
0

我必須編寫一個腳本,只刪除svn簽出的文件。這就像撤消svn結賬。刪除svn文件和目錄

+1

你想達到什麼目的?你想刪除所有.svn文件夾嗎? – 2012-01-11 07:27:30

+0

將來如果你能提供一個更好的解釋你的意圖會更好。 – Kev 2012-01-11 14:32:58

+0

@Kev有時與客戶一起工作,很難用幾句話解釋意圖......它更像是我想做一個乾淨的未安裝的東西......就像刪除我創建的數據庫並清理任何代碼我已經下載了... – 2012-01-11 18:23:01

回答

0

找到了一個更好的方法來做到這一點。

0
find . -name "FILE-TO-FIND" -exec rm -rf {} \; 
+0

'-exec'前面沒有空格,但是使用'rm -r'無論如何都失敗了使用'find'的好處。 – tripleee 2012-01-11 07:55:52

1

每個文件foobar在SVN 工作拷貝簽出保存的文件.svn/text-base/foobar.svn-base在其自身的副本。獲取這個文件列表,你可以得到列表檢出文件。

ls .svn/text-base/ | sed 's/\.svn-base$//' | xargs rm 

現在,讓它遞歸,您可以使用查找和複雜一點sed

find -wholename '*/.svn/text-base/*.svn-base' | sed 's/\/\.svn\/text-base\/\(.*\)\.svn-base$/\/\1/' | xargs rm 

但最後,我真的不知道你想達到什麼目的? OP有沒有真正理解的含義在SVN中檢出的含義?

+0

或者你可以使用XML選項解析'svn status -v'的輸出。 – tripleee 2012-01-11 07:57:29

+0

非常感謝你們兩位...使用svn status -v |剪下-d''-f28 | sed's/^ \ ./ \。svn /'|剪下-d/-f1 | uniq | xargs rm -rf ....雖然我對切割第28列並不滿意......但有一種更好的方法......但它現在起作用...... – 2012-01-11 08:46:24