通过11个示例掌握 linux xargs 命令的使用

Linux-Xargs-Command-Examples

xargs 是 Unix 类系统中的命令,该系统从标准输入中读取项目,由空白(可以用双引号或单个引号或后斜线保护)或新行界定,并执行命令(默认 /bin/echo)一次或多次,标准输入上的空白行被忽略。

xargs 命令与其他命令结合使用非常方便。默认情况下,它期望来自 STDIN 的输入。xargs 主要用于增强初始命令的输出,并利用输出执行大量操作。

在这篇文章中,我们将讨论 11 个 linux xargs 命令的实际示例

(1) 基本用法

输入 xargs,它将期望我们输入,输入完一行,以 enter 结束,再输入下一行,然后执行 ctrl+d 查看输出,如下所示

linuxtechi@mail:~$ xargs
hello
john
this is me ( ctrl+d)
hello john this is me
linuxtechi@mail:~$home/Downloads#

(2) 使用分隔符 (-d)

使用选项 -d 指定分隔符,并使用 \n 作为分隔符。当按下 ctrl+d 时,它将回显到屏幕上

[root@linuxtechi ~]# xargs -d\n
Hi
Welcome here
Now press Ctrl+D
Hi
Welcome here
Now press Ctrl+D

[root@linuxtechi ~]#

(3) 限制每行输出 (-n)

可以在 xargs 命令中使用 -n 选项根据需要限制输出,例如每行只显示 2 项

linuxtechi@mail:~$ echo a1 b2 c3 d4 e45
a1 b2 c3 d4 e5
linuxtechi@mail:~$ echo a1 b2 c3 d4 e5 | xargs -n 2
a1 b2
c3 d4
e5
linuxtechi@mail:~$

(4) 在执行前启用用户提示 (-p)

在 xargs 命令中使用选项 -p,执行前会提示用户 y (是) 和 n (否)

linuxtechi@mail:~$ echo a1 b2 c3 d4 e5 | xargs -p -n 2
/echo a1 b2 ?...y
a1 b2
echo c3 d4 ?...y
c3 d4
echo e5 ?...n
linuxtechi@mail:~$ 
linuxtechi@mail:~$ echo a1 b2 c3 d4 e5 | xargs -p -n 2
/echo a1 b2 ?...y
a1 b2
echo c3 d4 ?...y
c3 d4
echo e5 ?...y
e5
linuxtechi@mail:~$

(5) 使用 find 和 xargs 删除文件

假设我们要从 /tmp 文件夹删除 *.txt 文件,运行以下命令

linuxtechi@mail:~$ find /tmp  -type f -name '*.txt' | xargs rm

注意: 始终建议使用上述 find 和 xargs 命令的组合删除 1000+ 文件,因为它节省时间和系统资源。

(6) 使用 xargs 和 grep 命令进行搜索

可以使用 grep 命令和 xargs 从 find 命令的结果中筛选特定的搜索。

linuxtechi@mail:~$ find . -name "stamp" | xargs grep "country"
country_name
linuxtechi@mail:~$

(7) 处理文件名中的空格

xargs 还可以通过使用 print0 和 xargs -0 参数来处理 find 命令查找文件中的空格。

linuxtechi@mail:~$ find /tmp -name "*.txt" -print0 | xargs -0 ls
/tmp/abcd asd.txt /tmp/asdasd asdasd.txt /tmp/cdef.txt

linuxtechi@mail:~$ find /tmp -name "*.txt" -print0 | xargs -0 rm
linuxtechi@mail:~$

(8) xargs 与 cut 命令

为了演示,让我们首先创建一个包含以下内容的 cars.txt

linuxtechi@mail:~$ cat cars.txt
Hundai,Santro
Honda,Mobilio
Maruti,Ertiga
Skoda,Fabia

显示第一列中的数据,如下所示

linuxtechi@mail:~$ cut -d, -f1 cars.txt | sort | xargs
Honda Hundai Maruti Skoda
linuxtechi@mail:~$

(9) 计算每个文件的行数

linuxtechi@mail:~$ ls -1 *.txt | xargs wc -l
4 cars.txt
13 trucks.txt
17 total
linuxtechi@mail:~$

(10) 将文件移动到不同的位置

linuxtechi@mail:~$ pwd
/home/linuxtechi
linuxtechi@mail:~$ ls -l *.sh
-rw-rw-r-- 1 linuxtechi linuxtechi 0 Sep 15 22:53 abcde.sh
-rw-rw-r-- 1 linuxtechi linuxtechi 0 Sep 15 22:53 abcd.sh
-rw-rw-r-- 1 linuxtechi linuxtechi 0 Sep 15 22:53 fg.sh

linuxtechi@mail:~$ sudo find . -name "*.sh" -print0 | xargs -0 -I {} mv {} backup/
linuxtechi@mail:~$ ls -ltr backup/
total 0
-rw-rw-r-- 1 linuxtechi linuxtechi 0 Sep 15 22:53 abcd.sh
-rw-rw-r-- 1 linuxtechi linuxtechi 0 Sep 15 22:53 abcde.sh
-rw-rw-r-- 1 linuxtechi linuxtechi 0 Sep 15 22:53 fg.sh
linuxtechi@mail:~$

(11) 替换命令中的字符串 (-i)

如果我们运行下面的命令,它将在当前工作目录中创建三个文件 a、b 和 c

linuxtechi@mail:~$ printf "a\nb\nc\n" | xargs touch

如果你想创建 a.txt, b.txt 和 c.txt,那么在 xargs 命令中使用 -i 参数,它将用 a 替换为 a.txt,以此类推,示例如下:

linuxtechi@mail:~$ printf "a\nb\nc\n" | xargs -i touch {}.txt

我的开源项目

酷瓜云课堂-开源知识付费解决方案

身强体健,龙精虎猛的活着。

456 声望
3 粉丝
0 条评论
推荐阅读
如何在 CentOS 8 上配置邮件服务器 ?
Postfix 是一个免费的开源 MTA (Mail Transfer Agent) 邮件传输代理,用于在 Linux 系统上路由或发送电子邮件。在本指南中,您将学习如何在 CentOS 8 上安装和配置 Postfix。

鸠摩智首席音效师阅读 280

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.5k

confluence7.2.1的部署与迁移---呕心沥血版
Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。 到官网下载最新版本,截止目前...

暗涌阅读 7.8k

C++编译器和链接器的完全指南
C++是一种强类型语言,它的编译和链接是程序开发过程中不可或缺的两个环节。编译器和链接器是两个非常重要的概念。本文将详细介绍C++中的编译器和链接器以及它们的工作原理和使用方法。

小万哥2阅读 1.1k

封面图
Ubuntu 20.04 读写 Windows 10 共享目录(qbit)
本文实验环境中,Windows 操作系统版本为 Windows Server 2016,应该对 Windows 10 和 Windows Server 2019 同样适用

qbit1阅读 6.3k

Ubuntu 20.04 搭建 Elasticsearch 7.x 小集群(qbit)
环境ES 节点硬件:3 台 AWS m5.4xlarge(16 vCPU/64GB 内存)Kibana 硬件:1 台 AWS m5.large(2 vCPU/8GB 内存)操作系统:Ubuntu 20.04 LTSElasticsearch 7.9.3Kibana 7.9.3机器示意图操作系统这里主要讲 EBS ...

qbit阅读 4.1k

Linux下编译WebRTC(Linux和Android版本)
随着新冠疫情的影响,这两年音视频的需求呈爆发式增长。在音视频领域中,WebRTC可以说是一个绕不开宝库,包括了音视频采集、编解码、传输、渲染的全过程。本文主要记录下在Linux平台上编译WebRTC Linux和Android...

吴尼玛阅读 3.4k评论 2

身强体健,龙精虎猛的活着。

456 声望
3 粉丝
宣传栏