美文网首页
每天一条linux命令——xargs

每天一条linux命令——xargs

作者: 知丶雲淡 | 来源:发表于2021-06-29 16:58 被阅读0次

xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数

常用参数

  • -d 选项(此选项macOsx系统不支持)
    默认情况下xargs将其标准输入中的内容以空白(包括空格、Tab、回车换行等)分割成多个之后当作命令行参数传递给其后面的命令,并运行之,我们可以使用 -d 命令指定分隔符,例如:
    echo '11@22@33' | xargs echo
    输出:11@22@33
    echo '11@22@33' | xargs -d '@' echo
    输出:11 22 33
    指定以@符号分割参数,所以等价于 echo 11 22 33 相当于给echo传递了3个参数,分别是11、22、33

  • -p 选项
    使用该选项之后xargs并不会马上执行其后面的命令,而是输出即将要执行的完整的命令(包括命令以及传递给命令的命令行参数),询问是否执行,输入 y 才继续执行,否则不执行。这种方式可以清楚的看到执行的命令是什么样子,也就是xargs传递给命令的参数是什么,例如:
    echo '11@22@33' | xargs -p -d '@' echo
    输出:echo 11 22 33
    ?...y ==>这里询问是否执行命令 echo 11 22 33 输入y并回车,则显示执行结果,否则不执行
    11 22 33 ==>执行结果

  • -n 选项
    该选项表示将xargs生成的命令行参数,每次传递几个参数给其后面的命令执行,例如如果xargs从标准输入中读入内容,然后以分隔符分割之后生成的命令行参数有10个,使用 -n 3 之后表示一次传递给xargs后面的命令是3个参数,因为一共有10个参数,所以要执行4次,才能将参数用完。例如:
    echo '11@22@33@44@55@66@77@88@99@00' | xargs -d '@' -n 3 echo
    输出结果:
    11 22 33
    44 55 66
    77 88 99
    00
    等价于:
    echo 11 22 33
    echo 44 55 66
    echo 77 88 99
    echo 00
    实际上运行了4次,每次传递3个参数,最后还剩一个,就直接传递一个参数。

  • -E 选项,有的系统的xargs版本可能是-e eof-str
    该选项指定一个字符串,当xargs解析出多个命令行参数的时候,如果搜索到-e指定的命令行参数,则只会将-e指定的命令行参数之前的参数(不包括-e指定的这个参数)传递给xargs后面的命令
    echo '11 22 33' | xargs -E '33' echo
    输出:
    11 22
    可以看到正常情况下有3个命令行参数 11、22、33 由于使用了-E '33' 表示在将命令行参数 33 之前的参数传递给执行的命令,33本身不传递。等价于 echo 11 22 这里-E实际上有搜索的作用,表示只取xargs读到的命令行参数前面的某些部分给命令执行。
    注意:-E只有在xargs不指定-d的时候有效,如果指定了-d则不起作用,而不管-d指定的是什么字符,空格也不行。

  • -t 选项
    表示先打印命令,然后再执行
    linux litao$ echo 11 22 33 44 55 66 77 88 99 00 | xargs -t -n 3 echo
    输出:
    echo 11 22 33
    11 22 33
    echo 44 55 66
    44 55 66
    echo 77 88 99
    77 88 99
    echo 00
    00

  • -i 或者是-I 选项 这得看linux支持了
    将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
    echo 1 | xargs -I {} grep {} grep/b.text
    输出:
    10
    1
    注:这里-I 指定 {} 字符替换管道命令标准输出内容(若支持-i 则不需要指定可直接用:echo 1 | xargs -i grep {} grep/b.text)。

//b.text
10
20
30
9
8
1
22
33
hello word
  • -L/l num 选项
    从标准输入一次读取 num 行送给 command 命令。
//file.text
a.text
b.text
c.text

grep 目录下有file.text,a.text,b.text三个文件
cat grep/file.text | xargs -L1 find . grep -name
输出:
./grep/a.text
grep/a.text
./grep/b.text
grep/b.text

  • -x exit的意思,主要是配合-s使用
  • -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧

相关文章

  • Linux那点事-xargs命令详解

    Linux xargs 命令 xargs原理剖析及用法详解 1. 为什么需要xargs命令 1.1 管道|的缺陷 ...

  • 每天一条linux命令——xargs

    xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将...

  • xargs命令详解

    linux命令之xargs 1、xargs命令简介 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命...

  • Linux xargs 命令

    简介 xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。 xargs 可以将管道或标准输入(s...

  • Linux:xargs命令

    有些命令只能以命令行参数的形式接受数据,无法通过stdin接受数据流,此时采用命令xargs,将标准输入数据转换成...

  • linux常用的命令笔记

    linux 查询命令:find / -type f -name "*.*" | xargs grep "关键字" ...

  • Linux自带一些命令简单使用

    在linux下解压在win下压缩的zip文件乱码解决 xargs命令的使用,这个命令是linux自带命令也就是说各...

  • 如何解压目录下的所有zip压缩文件

    使用find xargs命令 xargs命令详解,xargs与管道的区别

  • Linux xargs命令详解

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却...

  • linux命令-xargs使用

    git diff --name-only 67669e07b2f8cb1068cb068693170e61d34...

网友评论

      本文标题:每天一条linux命令——xargs

      本文链接:https://www.haomeiwen.com/subject/zbqkultx.html