每天一个Linux命令:xargs

xargs

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

你可以试试运行:
代码:

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

参数选项:

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


    每天一个Linux命令:xargs_第1张图片
  • -a 从文件中读入作为sdtin


    每天一个Linux命令:xargs_第2张图片
  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的


    每天一个Linux命令:xargs_第3张图片
  • -p 操作具有可交互性,每次执行comand都交互式提示用户选择,当每次执行一个argument的时候询问一次用户


    每天一个Linux命令:xargs_第4张图片
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
    man 手册:


    每天一个Linux命令:xargs_第5张图片
    每天一个Linux命令:xargs_第6张图片
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符


    每天一个Linux命令:xargs_第7张图片

xargs 各种用法:

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

    每天一个Linux命令:xargs_第8张图片

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

    每天一个Linux命令:xargs_第9张图片

    查找并打包压缩:find ./ -name "*.c" | xargs tar -zcvf fin.tar.gz
    每天一个Linux命令:xargs_第10张图片

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

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

你可能感兴趣的:(每天一个Linux命令:xargs)