xargs使用复杂参数

一般情况下xargs只处理一个参数,因此可以这样使用,最后的rm会自动补齐一个参数:

1
find . | grep hello | xargs rm

但是有时候需要多个参数才能够正常运行,这时候怎么办呢?可以这样:

1
ls -1 2016*.log | xargs -I % -t tar czvf %.tar.gz % --remove-files

上述命令的意思是将当前目录中所有2016*.log文件使用tar打包成tar.gz文件,并删除源文件。其中:

  • xargs -I 参数指定了%作为占位符。它将指代ls命令返回的字符串作为参数。然后在后面的命令中,使用%代替了参数值;
  • xargs -t 参数作用是打印命令行

其他参数说明:

  • tar –remove-files 参数的作用是压缩完成之后删除源文件

附录. 参考资料

热评文章