svn 删除所有未受控制的文件

我在以前的博客文章:如何在命令行通过SVN命令筛选出修改过的文件并递交

思路和之前文章类似,只是这篇会对用到的命令做比较详细的分析

  • 查看状态:$svn st

    ? 3600ff3d-688e-410d-9412-3af5f40e4e49.mobileprovision 
    ? 568ef109-1996-48e0-b522-a9965ebdfddc.mobileprovision 
    ? 618c775c-8849-45d5-9e30-96f4728059f4.mobileprovision 
    ? 964b444f-86d6-4e4a-885e-e5b4f237bd20.mobileprovision 
    M config.lua
    可以看出我的当前目录有4个文件未受版本控制,1个文件被修改
  • 加入grep命令
$svn st | grep "?"
    ? 3600ff3d-688e-410d-9412-3af5f40e4e49.mobileprovision 
    ? 568ef109-1996-48e0-b522-a9965ebdfddc.mobileprovision 
    ? 618c775c-8849-45d5-9e30-96f4728059f4.mobileprovision 
    ? 964b444f-86d6-4e4a-885e-e5b4f237bd20.mobileprovision 

svn st | grep "?"解析如下:

svn st命令将输出文件的状态信息加入|的作用是将|前面命令的输出结果当做|后面grep命令的输入,grep "?"加入?的作用是将grep的输入数据赛选出未受版本控制的文件信息并输出(shell默认输出到控制台)

  • 将未受控制的文件信息摘出文件名 
$svn st | grep "?" | cut -c 9-

上面的命令将输出如下结果到控制台

3600ff3d-688e-410d-9412-3af5f40e4e49.mobileprovision

568ef109-1996-48e0-b522-a9965ebdfddc.mobileprovision

618c775c-8849-45d5-9e30-96f4728059f4.mobileprovision

964b444f-86d6-4e4a-885e-e5b4f237bd20.mobileprovision

 $svn st | grep "?"此命令已经详细说明,在次命令后面加入| cut命令是将grep "?"命令的输出作为cut命令的输入,cut命令的参数 -c 9-是截取输出的信息中每行中的从第9列开始到行尾的数据,这样输出的信息不包含? 和空格相关的数据了。

  • $svn st | grep "?" | cut -c 9-的输出结果重定向到一个临时文件
 $svn st | grep "?"  |  cut -c 9- > del.txt

>的作用是将>左边命令的输出定向到>右边的文件中(不在控制台上输出),这样del.txt就保存了所有需要删除的文件名信息

  • 最后通过svn delete命令将del.txt中列出的文件删除 

$svn delete --force --targets del.txt

大工告成,收工!
 

 

posted @ 2015-07-21 15:29  laogui0906  阅读(1567)  评论(0编辑  收藏  举报