首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
常用软件
运维软件
办公软件
书籍资源
日知录
招聘信息
读书计划
书单
关于我们
首页 运维教程Linux基础xargs的使用实战

xargs的使用实战

一. xargs命令介绍

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 擅长将标准输入数据转换成命令行的参数。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

很多时候我们无法用管道完成的命令,可以使用xargs命令来完成。
[root@rhce ~]# echo “hello” |echo ## 无法输出hello
但是使用xargs就不同了:

[root@rhce ~]# echo "hello" |xargs echo
hello
[root@rhce ~]# 

xargs 作用:

xargs的作用在于大多数命令(比如 rm,mkdir,ls)与管道一起使用时,都需要xargs将标准输入转为命令行的参数

echo “one two three” | xargs mkdir 等同于mkdir one two three

二. 常用参数

|参数|说明|
|–|–|
a|从文件中读入作为stdin
n| 以空行为分割,多行输出
d| 自定义定界符
p| 打印出要执行的命令,询问用户是否执行
t|打印出最终要执行的命令,然后直接执行,不需要用户确认。

二. 单行与多行的输出

1. 创建测试文件
[root@rhce ~]# cat a.txt 
1 2 3 4 5 6
7 8 9 10
11 12
2. 将多行变成单行
[root@rhce ~]# cat a.txt |xargs
1 2 3 4 5 6 7 8 9 10 11 12
3. 将单行数据 变成3个空格一列
[root@rhce ~]# cat a.txt |xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12

三. 指定定界符

  1. 创建测试文件
[root@rhce ~]# cat b.txt
zmgaoshxzmgaoshxzmgaosh
  1. 已x为分隔符分割
[root@rhce ~]# cat b.txt | xargs -d x
zmgaosh zmgaosh zmgaosh
  1. 指定以x为分隔符,并以一个空格为一行,划分成多行
[root@rhce ~]# cat b.txt |xargs -d x -n 1
zmgaosh
zmgaosh
zmgaosh

四. 特殊用法

xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。

find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。

创建测试文件
[root@rhce test]# pwd
/root/test
[root@rhce test]# touch aaa bbb
[root@rhce test]# ls
aaa bbb

使用find查找并删除

[root@rhce test]# find ./ -type f -print0 
./aaa./bbb[root@rhce test]# find ./ -type f -print0 | xargs -0 rm
[root@rhce test]# ls

问题:
查找当前路径下文件内容包含abc 的文件

**[root@rhce test]# find . -name "*.txt" | xargs grep "abc"
./a.txt:abc
./b.txt:abc
[root@rhce test]#** 

总结

xargs是个很有用的命令,需要大家多研究它的使用方法和用法,方便更快的处理文本内容

本文链接:http://www.geekyunwei.com/2046.html

网友评论comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 备案号: 京ICP备2021004281号
扫二维码
扫二维码
返回顶部