【博客130】linux传递参数命令—xargs

内容: xargs是将参数列表转切割成小部分,一个个传递给其他命令,用于解决命名的参数过多时,无法一一传递的问题,也就是说它能够捕获一个命令的输出,然后传递给另外一个命令。

参数:

-0 当sdtin含有特殊字元时候,将其当成一般字符,想/’空格等

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

-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志
的时候就停止。

-p 当每次执行一个argument的时候询问一次用户

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

-t 表示先打印命令,然后再执行。

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

-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。

-s num 命令行的最好字符数,指的是xargs后面那个命令的最大命令行字符数。

-L  num Use at most max-lines nonblank input lines per command line.-s是含有空格的。

-l  同-L

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

实例:

1.下载一个文件里的所有链接的内容:
cat url-text.txt | xargs wget –c

2.匹配并删除大量文件:
find . -name "*.cpp" | xargs rm

3.找出所有的.png文件并用tar工具进行归档整理
find ~/Downloads/ -name *.png -type f -print0 | xargs -0 tar -cvzf images.tar.gz

4.统计某一目录下每个文件的单词数
find /home/wlin/RC_CI/ -name *.py -type f -print0 | xargs -0 wc

5.删除目录下除了特定文件外的所有文件
find . -type f -not -name '*gz' -print0 | xargs -0 rm -v 

注意点:
find . -name '*.txt' |grep test 与 find . -name '*.txt' |xargs grep test结果是不一样的
解析:
find . -name '*.txt' |grep test,是将前面命令的标准输出作为标准输入传给了grep test,那么
grep是从这些标准输入寻找test字符,也就是搜出来了文件名字带test的txt文件

find . -name '*.txt' |xargs grep test,通过xargs,find得到的文件名成为了参数传给后面grep
,也就是搜出来是所有txt文件里面有关test的内容

大四学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈

发布了158 篇原创文章 · 获赞 34 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43684922/article/details/103395419
今日推荐