xargs的理解与简单应用

在我们使用find命令查找一些文件时,由于find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。其和find命令配合使用的格式如下:

find | xargs COMMAND

XARGS

. xargs - 从标准输入或管道构造参数列表并运行命令

xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

xargs是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数。

这个xargs命令会执行一个有趣的函数。它从标准输入或管道接受输入,并把输入转换为一个特定命令的参数列表。

由于xargs命令的这些特性所以当我们使用find命令查找一些文件并将查找结果传递给后面指定的命令时,如果担心后面指定的命令不能接受过多的参数时从而导致命令报错,便可以使用xargs命令接受find 命令的输出结果并作为xargs命令自身的参数列表;

如以下命令:

[[email protected] ~]# mkdir -p -v  playground/dir-{00{1..99},0{10..99},100}

[[email protected] ~]# 1014  touch playground/dir-{00{1..99},0{10..99},100}/file-{A-Z}

创建一百个子目录,每个子目录下创建26个空文件;

[[email protected] ~]# find /root/playground -type f -name ‘file-A‘

使用find命令查找file-A 这个文件 ,这个命令会产生一个较长输出(190行), 在这样的情况下我们便可以使用xargs命令通过管道接受find命令的输出结果,并且把find命令的输出结果作为某个命令的参数,如ls -l 命令 :

[[email protected] ~]# find /root/playground -type f -name ‘file-A‘ | xargs ls -l

效果与

[[email protected] ~]find /root/playground -type f -name ‘file-A‘ -exec ls -l {} \;

命令一样且有效的避免了参数个数过多导致命令出现溢出错误的情况;

备注:这里只介绍了xargs命令不带参数时一些简单用法,xargs带参数的用法请参考其他博客或等待博客更新。

时间: 2024-10-05 05:41:58

xargs的理解与简单应用的相关文章

关于数字证书理解的简单整理以及12306网站证书简单分析

首先简单理解一下什么是数字证书.这里是一篇英文文档,描述的很形象.形象的描述了什么是公钥,什么是私钥,如果确保数字证书的可靠性等. 下面,我们看一个应用"数字证书"的实例:https协议.这个协议主要用于网页加密. 一般我们电脑的浏览器中都有一些受信任的证书颁发机构列表, 里边存储的都是一些机构的信息.这些机构都是权威的.当然可以通过安装软件的方式,来增加证书颁发机构,比如中国银行的根证书软件,阿里巴巴的根证书软件.默认我们认为这些软件都是从官网下载的,是绝对的没被篡改的,可靠的.简单

设计模式粗浅理解之一------简单工厂模式

设计模式粗浅理解之------简单工厂模式 什么是简单工厂模式 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 角色和职责 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产

JS javascript面向对象的理解及简单的示例

javascript面向对象的理解及简单的示例 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的语言,首先有必要从面向对象的概念着手 , 探讨一下面向对象中的几个概念: 1.一切事物皆对象 2.对象具有封装和继承特性 3.对象与对象之间使用消息通信,各自存在信息隐藏 以这三点做为依据,C++ 是半面向对象半面向过程语言,因为,虽然他实现了类的封装.继承和多态,但存在非对象性质的全局函数和变量.Java.C# 是完全的面向对象语言,它们通过类的形式组

HTML5中的Web Storage(sessionStorage||localStorage)理解与简单实例

Web Storage是什么? Web Storage功能,顾名思义,就是在Web上针对客户端本地储存数据的功能,具体来说Web Storage分为两种: sessionStorage: 将数据保存在session对象中,所谓session是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.session对象可以用来保存在这段时间内所要求保存的任何数据. localStorage: 将数据保存在客户端本地的硬件设备(通常指硬盘,当然可以是其他的硬

Python学习 Day14 python 类和元类(metaclass)的理解和简单运用

python 类和元类(metaclass)的理解和简单运用 (一) python中的类 首先这里讨论的python类,都基于继承于object的新式类进行讨论. 首先在python中,所有东西都是对象.这句话非常重要要理解元类我要重新来理解一下python中的类 class Trick(object): pass 当python在执行带class语句的时候,会初始化一个类对象放在内存里面.例如这里会初始化一个Trick对象 这个对象(类)自身拥有创建对象(通常我们说的实例,但是在python中

python 类和元类(metaclass)的理解和简单运用

(一) python中的类 首先这里讨论的python类,都基于继承于object的新式类进行讨论. 首先在python中,所有东西都是对象.这句话非常重要要理解元类我要重新来理解一下python中的类 class Trick(object): pass 当python在执行带class语句的时候,会初始化一个类对象放在内存里面.例如这里会初始化一个Trick对象 这个对象(类)自身拥有创建对象(通常我们说的实例,但是在python中还是对象)的能力. 为了方便后续理解,我们可以先尝试一下在新式

A*算法的理解与简单实现

基本定义 一种寻路算法,特点是:启发式的,效率高,基本思路比较简单. 用途 寻路.在指定的地图上,考虑到地图上的移动代价,找到最优的路径. 核心概念 开表,闭表,估值函数. 开表 开表,记录了当前需要处理的地图上的点. 1什么点会加入开表? 1.1    当一个点是起始点时,可以加入: 1.2    当一个点是起始点的邻接点,且不再闭表里时,可以进入开表: 2什么点会离开开表? 2.1开表中的点会按照f(n)进行升序排序,得到最小值的一个点被最先处理:当一个点已经处理后,会离开开表,加入闭表.

管道和xargs的理解

最近学习了linux的一些命令,看到一连串的管道符合xargs就懵球子了.就仔仔细细的学了学二者的区别 先总体说一下区别: 管道符 |  的意思就是说,将前一个命令的标准输出作为后面一个命令的标准输入. xargs 的意思就是说,把标准输入格式化为一行,作为后面的命令的命令行参数. 下面我们举个栗子 : 看懂了没? cat file.txt 我们看到文件里面是什么内容,然后我们再次 cat file.txt | xargs 一下,发现结果都变成一行了,这就是所谓的格式化为一行. 接下来我们看,c

Linux下线程池的理解与简单实现

首先,线程池是什么?顾名思义,就是把一堆开辟好的线程放在一个池子里统一管理,就是一个线程池. 其次,为什么要用线程池,难道来一个请求给它申请一个线程,请求处理完了释放线程不行么?也行,但是如果创建线程和销毁线程的时间比线程处理请求的时间长,而且请求很多的情况下,我们的CPU资源都浪费在了创建和销毁线程上了,所以这种方法的效率比较低,于是,我们可以将若干已经创建完成的线程放在一起统一管理,如果来了一个请求,我们从线程池中取出一个线程来处理,处理完了放回池内等待下一个任务,线程池的好处是避免了繁琐的