我经常需要删除不在特定svn源树中的所有文件.要获取所有文件名列表,我使用:
svn st | grep ^? | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
这个命令会给我一个文件名列表,每行一个名字.那怎么能表达出来的想法呢?
for (each line in ${svn st | grep ^? | awk '{print $2}' )
rm -f line
Run Code Online (Sandbox Code Playgroud)
?
使用xargs:
svn st | grep '^?' | awk '{print $2}' | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)
注意:在您的命令中,您不处理具有空格的文件,因为{print $2}.你还必须小心,xargs因为它在空格上分割它的输入.因此,-0如果文件名中有空格,则使用该选项会更安全.
这是一个更正确的xargs用法示例:
find -type f| tr \\n \\0 | xargs -0 wc
Run Code Online (Sandbox Code Playgroud)
或者,使用find -print0选项:
find -type f -print0 | xargs -0 wc
Run Code Online (Sandbox Code Playgroud)
xargs是最强大的UNIX工具之一.我每天都使用它.
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |