xargs命令解决“Argument list too long”

news2025/1/8 4:58:59

一、xargs命令概述

        xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。空格是其默认定界符,管道传递给xargs的输入会包含换行和空格,不过通过xargs的处理,换行和空格将被空格取代。

下图xargs接收标准输入的方式

下图是将标准输入转换成rm的参数。

下图使用了管道,管道符“|”,这个符号可以将一个命令的标准输出转换为另外一个命令的标准输入。

管道符的使用有两个条件:

1、管道命令只能处理前一个命令的标准输出,而不能处理标准错误;

2、管道命令右边命令必须能够接收标准输入。

二、xargs使用场景

        很多程序是不处理标准输入的,例如 kill , rm 这些程序如果命令行参数中没有指定要处理的内容则不会默认从标准输入中读取。

        上面的命令执行失败,是因为rm接受命令行参数中指定的处理内容,不从标准输入中获取处理内容。而xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。可以通过下图操作处理。xargs接收标准输入的内容并转换为rm的命令行参数。

        常见的能处理标准输入的命令有cat、grep、xargs、wc...

三、xargs命令以及与管道的区别

        xargs能够处理管道或者stdin并将其转换成特定命令的命令行参数;

管道是将一个命令的标准输出转换为另外一个命令的标准输入;

举例对比:

1、执行命令echo '--help' | cat

可以看到管道将标准输出转换为标准输入给cat命令,作为cat命令的处理内容,然后显示出来。

2、执行命令echo '--help'|xargs cat

        以上命令管道将标准输出转换为标准输入给xargs,xargs将标准输入转换为cat命令的命令参数,实际等价于cat --help。

四、xargs常用选项使用

        xargs不仅能将标准输入转换为后面命令的参数,它还可将标准输入分割为批,每批中有很多分割片段,片段默认按空格分隔,然后将这些片段按批交给xargs后面的命令进行处理。

        -d 自定义分隔符,默认是空白(空格、tab、回车换行)

        -n 设定多少片段为一批,将分批的参数传递给后面的命令作为参数执行。这个特性可以用于解决参数过长问题,如:-bash: /usr/bin/cp: Argument list too long。

        -i 使用{}作为替换符,这个字符串在命令运行时将替换为参数,每个参数命令都会被执行一次。如果不使用-i,则默认是将分割处理后的结果整体传递到【命令的最尾部】。但是有时候需要传递到多个位置,不使用-i就不知道传递到哪个位置了。这里看到使用i选项后,参数都是一个一批,最好不要和-n一同使用,如-n1可以,-n2就会异常。

        -t 先打印命令,在执行。如下图所示,可以看到xargs的默认命令是echo。

        -p 每执行一个参数询问一次用户。

五、案例

        rm、cp 、mv使用过程中遇到参数过长问题。

        删除文件最简单的方法是 rm ./*,当要删除的文件过多时会报 Argument list too long 这个错误。原因是 bash 会将 rm ./* 匹配到的文件都展开,生成一个非常长的命令,linux 内核对 command 长度有限制。getconf ARG_MAX可以查看长度。这时可以使用 xargs 来删除大量文件。

        1、ls ./* | xargs rm -rf

xargs 会将匹配到的文件以合理的长度传给 rm -rf,相当于是将文件分组删除。

        2、find . -name "*.log" |xargs -i cp {} /tmp/test

        3、统计文件数

                按10000个文件一行,共200行

        [root@localhost test]# ls |xargs -n 10000|wc -l

                        200

        4、查看三台服务器上nginx进程情况

                echo "192.168.0.1 192.168.0.2 192.168.0.3" \

                | xargs -i ssh root@{} 'ps aux | grep nginx'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

J2L3x助力企业业务协同,打破部门壁垒

在现代企业中,协同办公已经成为了一个关键的话题。在过去的几年里,我们已经看到了许多团队努力打破内部部门之间的壁垒,以更为高效的方式来协同工作。今天,我们要谈的是一种叫做J2L3x的企业沟通工具,这是一个旨在帮助团…

浅谈APP自动化测试工具的优势和应用

随着移动应用市场的迅速发展,APP的质量和性能变得至关重要。为了确保APP的稳定性和用户体验,自动化测试工具成为开发者和测试团队的关键利器。那么,APP自动化测试工具的优势和应用是什么?下面,就跟随掌控智能小编一起来看看具体介…

MySQL数据的导入导出mysqldump、mysqlimport into outfile和load data

0、概述 MySQL数据的导入导出方案通常是配套的,例如: 方案一:使用mysqldump导出数据,再使用mysql客户端导入数据 方案二:使用SELECT INTO OUTFILE命令导出数据,再使用LOAD DATA或mysqlimport导入数据 方案…

数据库第十七课-------ETL任务调度系统的安装和使用

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

java八股文面试[数据结构]——HashMap扩容优化

知识来源: 【2023年面试】HashMap在扩容上做了哪些优化_哔哩哔哩_bilibili

详解numpy.random.randn函数

文章目录 正态分布函数原型参数解析该函数的注意事项示例代码示例结果 参考正态分布曲线绘制代码 numpy的random模块中的randn函数用于从“标准正态(方差为1,均值为0的正态分布)”分布返回一个(或多个)float类型数据。…

Git提交项目到码云或者GitHub(小白也能看懂,图文详解)

1.在gitee上搭建远程仓库,并与本地连接 先注册一个gitee账号 Gitee - 企业级 DevOps 研发效能平台 在码云上新建仓库,用来存放项目 先在本地随便一个地方执行: 鼠标右键、git bash here(前提是你安装好了git) 配置…

yolov5的txt文件转xml文件格式(详细解释与完整代码供应)

文章目录 前言一、yolov5训练数据格式介绍1、txt的类别对应说明2、txt的文件说明3、txt文件格式3、yolov5训练文件形式 二、生成xml文件代码说明1、yolov5的txt读取代码2、生成xml代码 三、yolov5的txt文件转xml文件步骤四、完整代码 前言 本文章实现yolov5的txt数据格式转xml…

Cesium 添加与原生按钮样式相同的按钮

Cesium 添加与原生按钮样式相同的按钮 原生的按钮自定义一个&#xff0c;仿生按钮 原生的按钮 自定义一个&#xff0c;仿生按钮 html <div id"cesiumContainer"><button class"btn" ref"newBtn" click"buttonClick()">&l…

python3高级编程

文章目录 1. Python网络编程1.1 服务器端代码(Server)1.2 客户端代码(Client) 2. 多线程2.1 线程模块2.2 使用 threading 模块创建线程2.3 线程同步2.4 线程优先级队列&#xff08; Queue&#xff09; 3. 日期和时间4. SMTP发送邮件4.1 使用Python发送HTML格式的邮件4.2 Python…

springboot服务注册到Eureka,端口总是默认8080,自己配置端口不生效

这段时间接手了一个公司的老项目&#xff0c;用的是SpringCloud&#xff0c;在我用的时候突然发现有一个服务&#xff0c;注册到Eureka后&#xff0c;界面显示的端口和实际Ribbon调用的实例端口是不一致的&#xff0c;后来我自己写了个端口获取了一下所有的实例信息&#xff0c…

UltralSO软碟通制作Linux系统盘

第一步&#xff1a; 下载镜像 阿里云下载地址&#xff1a;https://mirrors.aliyun.com/centos-vault/ 按照需求选择系统版本&#xff0c;我这要求安装CentOS7.5的系统&#xff0c;我以CentOS7.5为例 第二步&#xff1a; 下载UltralSO软件 官网下载地址&#xff1a;https://cn.…

山西电力市场日前价格预测【2023-08-26】

日前价格预测 预测明日&#xff08;2023-08-26&#xff09;山西电力市场全天平均日前电价为287.61元/MWh。其中&#xff0c;最高日前电价为318.26元/MWh&#xff0c;预计出现在19: 30。最低日前电价为246.18元/MWh&#xff0c;预计出现在05: 15。 价差方向预测 1&#xff1a; 实…

反向传播求变量导数

反向传播求变量导数 1. 相关习题2. 推导流程2.1 相关公式2.3 变量导数求解 3. 代码实现3.1 参数对应3.2 代码实现 以前只知道反向传播通过链式法则实现今天看书发现图片上求出来的值自己算不出来所以自己算了一下&#xff0c;记录一下&#xff0c;并运行了书中的代码相关书籍&a…

Ceph入门到精通-如何编译安装Quagga?

Quagga 1. 理论部分 1.1 软件简介 Quagga中文翻译斑驴&#xff0c;是一种先进的路由软件包&#xff0c;提供一套基于TCP/IP的路由协议。 1.2 斑驴的应用场景 – 使得操作系统变成专业的路由 – 使得操作系统具有与传统路由通过路由协议直接对接 1.3 斑驴支持的路由协议 …

linux篇---使用systemctl start xxx启动自己的程序|开机启动|守护进程

linux篇---使用systemctl start xxx启动自己的程序|开机启动|守护进程 1、创建服务2、修改权限3、启动服务4、测试 机器&#xff1a;Nvidia Jetson Xavier系统&#xff1a;ubuntu 18.04 最近在使用symfony的console组件&#xff0c;需要执行一个后台的php进程&#xff0c;并且…

DevOps之自动化测试

什么是自动化测试&#xff1f; 明确一下自动化测试不是什么。自动化测试不是指自动化生成测试代码&#xff0c;而是自动化地执行由开发人员或测试人员编写的测试代码。正如下面这句谚语&#xff1a;“绝不要手工去做任何可以被自动化处理的事情。——Curt Hibbs” 之前是由人…

Windows 桌面运维及安全管理

什么是桌面运维 桌面运维是IT管理的重要部分&#xff0c;是一种系统管理的技术&#xff0c;它的主要目的是通过管理用户、计算机和其他设备来提高组织的效率。它不仅能够降低维护成本&#xff0c;而且还能够提高系统的可用性。 如今随着企业设备越来越丰富&#xff0c;桌面运…

前端需要理解的数据治理与异常监控知识

1 数据治理 前端数据治理的重要指标是准确性和数据&#xff0c;一个数据对象包括数据值和其他元数据。 2 数据上报方式 2.1 Image 通过将采集的数据拼接在图片请求的后面&#xff0c;向服务端请求一个 1*1 px 大小的图片&#xff08;gif&#xff09;实现的&#xff0c;设置…

与活力四射的 {Agorians} 化身一起拥抱自我超越

准备好通过新的化身转换来探索新的自己吧&#xff01; 我们与法国多学科艺术家和 DJ Agoria 达成合作&#xff0c;自豪地宣布推出 {Agorians} 化身系列&#xff0c;这是有史以来第一个实现自动外观变换以反映一天中真实时间的 Web3 化身系列。在一天里&#xff0c;你们的化身…