xargs
Posted luohaonan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xargs相关的知识,希望对你有一定的参考价值。
通常学习linux的一个关键是命令,通过一个命令完成一些事情。有时候为了更高效的完成一些事情,需要把注意力放到命令的参数上面。xargs就是用来处理参数的。
xargs处理完的参数默认是通过/bin/echo来执行,参数之间通过空白符号进行分割(当然可以通过-d选项指定),通过-n指定一次需要被执行的参数的个数。比如:
[email protected] ~
$ echo "A b C d E f G H" | xargs -n2
A b
C d
E f
G H
[email protected] ~
$ echo "A:b:C:d:E:f:G:H" | xargs -d: -n2
A b
C d
E f
G H
下面是xargs的几个简单举例:
#当然下面这个只是个夸张的例子,完全没有这么麻烦,只是举例而已:
[email protected]:~/test $ tree . ├── a.c ├── a.txt ├── b.c ├── b.txt ├── c.c ├── c.txt └── txtdir 1 directory, 6 files [email protected]:~/test $ ls *.txt | xargs -n1 -I{} mv {} ./txtdir [email protected]:~/test $ tree . ├── a.c ├── b.c ├── c.c └── txtdir ├── a.txt ├── b.txt └── c.txt 1 directory, 6 files [email protected]:~/test $
#注意,通过xargs --help可以知道-I是替换的意思,也就是xargs把参数进行替换的操作,其中的{}代表的就是那个参数,
#在最后的命令部分"mv {} ./txtdir" 就对前面那个{}进行引用,也就是说我们并没有进行参数的替换
xargs&find
#当xargs与find一起工作的时候find使用-print0用以把查找到的结果通过不可见字符NULL进行分割
#然后xargs通过-0选项指定参数的分割方式为不可见字符NULL
#详见man find部分与xargs --help的部分说明。
[email protected]:~/test $ ls a.c b.c c.c txtdir [email protected]:~/test $ find . -type f -name "*.c" -print0 | xargs -0 rm -f [email protected]:~/test $ ls txtdir [email protected]pi:~/test $
参考:这里
以上是关于xargs的主要内容,如果未能解决你的问题,请参考以下文章