我经常需要删除所有不在特定 svn 源代码树中的文件。要获取所有文件名的列表,我使用:
svn st | grep ^? | awk '{print $2}'
这个命令会给我一个文件名列表,每行一个名字。那我要怎么表达呢
for (each line in ${svn st | grep ^? | awk '{print $2}' )
rm -f line
?
最佳答案
使用 xargs:
svn st | grep '^?' | awk '{print $2}' | xargs rm -rf
注意:在您的命令中,由于 {print $2}
,您不会处理包含空格的文件。您还必须小心使用 xargs
,因为它会将输入拆分为空格。因此,如果文件名中有空格,使用 -0
选项会更安全。
这是一个更正确的 xargs 用法示例:
find -type f| tr \\n \\0 | xargs -0 wc
或者,使用 find -print0
选项:
find -type f -print0 | xargs -0 wc
xargs
是最强大的 UNIX 工具之一。我每天都用它。
关于linux - 如何表达 "map a linux command to each line in a file"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3789990/