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