若是使用svn的命令行,例如在linux下的终端中使用, linux
svn的添加命令是svn add,删除命令是svn del,可是缺少批量的操做,若是我在资源管理器中,手动添加了好多个文件夹下的各类各样的文件,而后我想一次性add,svn就力不从心了,即便使用 svn add *,也会由于新添文件的父目录已经被添加进版本库而忽略父目录下的全部文件。手动删除了不少文件,想要一次性del时,也会遇到相似的状况。 svn
经过研究,发现如下的命令可以解决这两个问题: 命令行
批量删除文件—— 资源
svn status|grep ! |awk '{print $2}'|xargs svn del awk
语句释义是:首先svn status查看svn状态,列出全部改动,打!号的是已经删除的文件可是还未标记成从库中除去,grep !将这些文件单独抽离出来, 终端
此时若是不执行后面的语句,呈现的内容应该是相似 grep
! img/p/2-49-small.jpg
! img/p/2-48-thickbox.jpg
! img/p/2-48-medium.jpg
再用awk '{print $2}'将抽离出来的文本结果处理,留下每一行的第二段文字,即后面的文件名, im
此处必须注意,svn status|grep !和后面的语句|awk '{print $2}'|xargs svn del之间,必须有一个空格,不然终端仍是会认为这个!号是特殊符号 img
此时呈现的结果应该是 删除文件
img/p/2-49-small.jpg这个时候就能够直接递交给svn del命令了,使用xargs这个参数构造命令,将每一行的文本做为参数提供给svn del,结果就是全部列出的文件都执行了一遍del了。
批量添加文件——
几乎同样,不一样的是svn标记的符号不一养,使用的是问号!
svn status|grep ? |awk '{print $2}'|xargs svn add