1. 程式人生 > >svn 命令列 批量刪除和批量新增

svn 命令列 批量刪除和批量新增

如果使用svn的命令列,例如在linux下的終端中使用,

svn的新增命令是svn add,刪除命令是svn del,但是缺乏批量的操作,如果我在資源管理器中,手動添加了好多個資料夾下的各種各樣的檔案,然後我想一次性add,svn就力不從心了,即使使用svn add *,也會因為新添檔案的父目錄已經被新增進版本庫而忽略父目錄下的所有檔案。手動刪除了很多檔案,想要一次性del時,也會遇到類似的情況。

通過研究,發現以下的命令能夠解決這兩個問題:

批量刪除檔案——

svn status|grep ! |awk '{print $2}'|xargs svn del

語句釋義是:首先svn status檢視svn狀態,列出所有改動,打!號的是已經刪除的檔案但是還未標記成從庫中除去,grep !將這些檔案單獨抽離出來,

此時如果不執行後面的語句,呈現的內容應該是類似

!       img/p/2-49-small.jpg
!       img/p/2-48-thickbox.jpg
!       img/p/2-48-medium.jpg

再用awk '{print $2}'將抽離出來的文字結果處理,留下每一行的第二段文字,即後面的檔名,

此處必須注意,svn status|grep !和後面的語句|awk '{print $2}'|xargs svn del之間,必須有一個空格,否則終端還是會認為這個!號是特殊符號

此時呈現的結果應該是

img/p/2-49-small.jpg
img/p/2-48-thickbox.jpg

img/p/2-48-medium.jpg

這個時候就可以直接遞交給svn del命令了,使用xargs這個引數構造命令,將每一行的文字作為引數提供給svn del,結果就是所有列出的檔案都執行了一遍del了。

批量新增檔案——

幾乎一樣,不同的是svn標記的符號不一養,使用的是問號!

svn status|grep ? |awk '{print $2}'|xargs svn add