每天一个Linux命令:xargs

xargs

管道是实现“将前面的标准输出作为后面的标准输入
xargs是实现“将标准输入作为命令的参数
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数

你可以试试运行:
代码:

echo "--help"|cat     ---直接打印出--help
echo "--help"|xargs cat  --- 打开了cat的帮助文档

参数选项:

  • -0 当sdtin含有特殊字元时候,将其当成一般字符,像“空格”


  • -a 从文件中读入作为sdtin


  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的


  • -p 操作具有可交互性,每次执行comand都交互式提示用户选择,当每次执行一个argument的时候询问一次用户


  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
    man 手册:


  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符



xargs 各种用法:

  • 用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题
    $find ~ -name ‘*.log’ -print0 | xargs -i -0 rm -f {}

  • 查找文件并压缩
    查找当前目录下所有.c文件find ./ -name "*.c"


    查找并打包压缩:find ./ -name "*.c" | xargs tar -zcvf fin.tar.gz

  • 假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接
    cat url-list.txt | xargs wget –c

  • 把指定文件拷贝到指定目录
    find -name "*.txt" | xargs -i cp {} /home/doc

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容