记录一linux命令:xargs

2023-11-05

转自:http://www.sudu.cn/info/html/edu/linux/20080102/290238.html

xargs

大多数 Linux 命令都会产生输出:文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文件类型(可执行文件、ascii 文本等);您可以处理输出,使其仅显示文件名,现在您希望将这些名称传递给 ls -l 命令以查看时间戳记。xargs 命令就是用来完成此项工作的。它允许您对输出执行其他某些命令。记住下面这个来自于第 1 部分中的语法: 
file -Lz * | grep ASCII | cut -d":" -f1 | xargs ls -ltr
让我们来剖析这个命令字符串。第一个,file -Lz *,用于查找是符号链接或者经过压缩的文件。它将输出传递给下一个命令 grep ASCII,该命令在其中搜索 "ASCII" 字符串并产生如下所示的输出: alert_DBA102.log:        ASCII English text
alert_DBA102.log.Z:      ASCII text (compress’d data 16 bits)
dba102_asmb_12307.trc.Z: ASCII English text (compress’d data 16 bits)
dba102_asmb_20653.trc.Z: ASCII English text (compress’d data 16 bits)
由于我们只对文件名感兴趣,因此我们应用下一个命令 cut -d":" -f1,仅显示第一个字段: alert_DBA102.log
alert_DBA102.log.Z
dba102_asmb_12307.trc.Z
dba102_asmb_20653.trc.Z
现在,我们希望使用 ls -l 命令,将上述列表作为参数进行传递,一次传递一个。xargs 命令允许您这样做。最后一部分,xargs ls -ltr,用于接收输出并对其执行 ls -ltr 命令,如下所示:
ls -ltr alert_DBA102.log
ls -ltr alert_DBA102.log.Z
ls -ltr dba102_asmb_12307.trc.Z
ls -ltr dba102_asmb_20653.trc.Z
因此,xargs 本身虽然没有多大用处,但在与其他命令相结合时,它的功能非常强大。
下面是另一个示例,我们希望计算这些文件中的行数:
$ file * | grep ASCII | cut -d":" -f1  | xargs wc -l
  47853 alert_DBA102.log
     1Array dba102_cjq0_144Array3.trc
  2Array053 dba102_mmnl_144Array7.trc
    154 dba102_reco_144Array1.trc
     43 dba102_rvwr_14518.trc
  77122 total
(注:上述任务还可用以下命令完成:)
$ wc -l ‘file * | grep ASCII | cut -d":" -f1 | grep ASCII | cut -d":" -f1‘
该 xargs 版本用于阐释概念。Linux 可以用几种方法来完成同一个任务;请使用最适合您的情况的方法。
使用该方法,您可以快速重命名目录中的文件。
$ ls | xargs -t -i mv {} {}.bak
-i 选项告诉 xargs 用每项的名称替换 {}。-t 选项指示 xargs 先打印命令,然后再执行。
另一个非常有用的操作是当您使用 vi 打开要编辑的文件时:
$ file * | grep ASCII | cut -d":" -f1 | xargs vi
该命令使用 vi 逐个打开文件。当您希望搜索多个文件并打开它们进行编辑时,使用该命令非常方便。 
它还有几个选项。最有用的可能是 -p 选项,它使操作具有可交互性:
$ file * | grep ASCII | cut -d":" -f1 | xargs -p vi
vi alert_DBA102.log dba102_cjq0_144Array3.trc dba102_mmnl_144Array7.trc 
  dba102_reco_144Array1.trc dba102_rvwr_14518.trc ?...
此处的 xarg 要求您在运行每个命令之前进行确认。如果您按下 "y",则执行命令。当您对文件进行某些可能有破坏且不可恢复的操作(如删除或覆盖)时,您会发现该选项非常有用。
-t 选项使用一个详细模式;它显示要运行的命令,是调试过程中一个非常有帮助的选项。
如果传递给 xargs 的输出为空怎么办?考虑以下命令:
$ file * | grep SSSSSS | cut -d":" -f1 | xargs -t wc -l
wc -l 
            0
$
在此处,搜索 "SSSSSS" 后没有匹配的内容;因此 xargs 的输入均为空,如第二行所示(由于我们使用 -t 这个详细选项而产生的结果)。虽然这可能会有所帮助,但在某些情况下,如果没有要处理的内容,您可能希望停止 xargs;如果是这样,可以使用 -r 选项: $ file * | grep SSSSSS | cut -d":" -f1 | xargs -t -r wc -l
$
如果没有要运行的内容,该命令退出。
假设您希望使用 rm 命令(该命令将作为 xargs 命令的参数)删除文件。然而,rm 只能接受有限数量的参数。如果您的参数列表超出该限制怎么办?xargs 的 -n 选项限制单个命令行的参数个数。 
下面显示了如何限制每个命令行仅使用两个参数:即使向 xargs ls -ltr 传递五个文件,但每次向 ls -ltr 仅传递两个文件。
$ file * | grep ASCII | cut -d":" -f1 | xargs -t -n2 ls -ltr  
ls -ltr alert_DBA102.log dba102_cjq0_144Array3.trc 
-rw-r-----    1 oracle   dba           738 Aug 10 1Array:18 dba102_cjq0_144Array3.trc
-rw-r--r--    1 oracle   dba       2410225 Aug 13 05:31 alert_DBA102.log
ls -ltr dba102_mmnl_144Array7.trc dba102_reco_144Array1.trc 
-rw-r-----    1 oracle   dba       5386163 Aug 10 17:55 dba102_mmnl_144Array7.trc
-rw-r-----    1 oracle   dba          6808 Aug 13 05:21 dba102_reco_144Array1.trc
ls -ltr dba102_rvwr_14518.trc 
-rw-r-----    1 oracle   dba          2087 Aug 10 04:30 dba102_rvwr_14518.trc
使用该方法,您可以快速重命名目录中的文件。 
$ ls | xargs -t -i mv {} {}.bak
-i 选项告诉 xargs 用每项的名称替换 {}。 
如果你觉得本文不错,可以订阅本站RSS | 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录一linux命令:xargs 的相关文章

  • linux硬链接与软链接

    http www cnblogs com sonic4x archive 2011 08 05 2128543 html 1 Linux链接概念 Linux链接分两种 一种被称为硬链接 Hard Link 另一种被称为符号链接 Symbol
  • cramfs文件系统制作

    参考 http blog csdn net liukun321 article details 7256456 1 首先配置内核 打开对cramfs的支持 File systems gt Miscellaneous filesystems
  • Linux统计某文件夹下文件、文件夹的个数

    http blog sina com cn s blog 464f6dba01012vwv html 统计某文件夹下文件的个数 ls l grep wc l 统计某文件夹下目录的个数 ls l grep wc l 统计文件夹下文件的个数 包
  • addr2line objdump命令使用方法

    如果是 的 CMakeList txt 编译的时候需要加上一下选项 才可以生产 版本 可以使用addr2line 定位问题 catkin make DCMAKE BUILD TYPE debug DCATKIN WHITELIST PACK
  • ld 链接程序出错定位

    工具链相关问题 一般可 verbose 下 看看具体什么地方出问题 设置 LDFLAGS Wl verbose 例如 链接一堆 o文件 只有以下错误信息 ld final link failed Bad value 就可以加入 Wl ver
  • Linux系统之I/O进程

    Linux系统之I O进程 1 C库和C程序的编译过程 1 1 C库的分类 1 1 1 静态库的概念 1 1 2 制作静态库 1 1 3 动态库的概念 1 1 4 制作动态库 1 2 编译过程 共四步 2 标准I O 2 1 文件类型 2
  • 深入探究 Linux C中进程崩溃

    目录 前言 栈内存异常以及案列分享 堆内存异常以及案列分享 Ptmalloc的内存管理 前言 LinuxC的内存管理融入了设计者很多高效的算法和思想 提供了用户直接可以操作的内存的 指针 这也是其他语言不涉及的 除Go语言21世纪的C语言
  • shell命令以及运行原理(详解)

    Linux严格意义上说的是一个操作系统 我们称之为 核心 kernel 但我们一般用户 不能直接使用kernel 而是通过kernel的 外壳 程序 也就是所谓的shell 来与kernel沟通 1 从技术角度 Shell的最简单定义 命令
  • SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件

    转载 http blog sina com cn s blog 759444350100vx8u html MIME邮件格式 在RFC 2822文档中定义了简单的ASCII编码的Email的邮件格式 然而随着Internet的发展 Emai
  • Linux文件误删除恢复操作

    本文参考http write blog csdn net postedit ticket ST 491405 OGjDDusZeyMgVQ7bHW7f passport csdn net 前言 作为一个多用户 多任务的操作系统 Linux下
  • linux系统之字符设备驱动——IIC驱动mma8451q

    linux系统之字符设备驱动 IIC子系统驱动mma8451q 1 原理图 2 驱动程序 mma8451q c Author your name Date 2021 02 23 22 16 37 LastEditTime 2021 02 2
  • Linux系统:常用服务端口

    目录 一 理论 1 端口分类 2 传输协议 3 常用端口 一 理论 1 端口分类 一个计算机最多有65535个端口 端口不能重复 Linux 只有 root 用户可以使用 1024 以下的端口 表1 端口分类 端口 范围 说明 公认端口 W
  • Ubuntu安装java

    转自 https www cnblogs com ziyue7575 p 13898610 html java8 apt安装 参考 https www cnblogs com zzy1024 p 11406269 html 若是没有配置国内
  • docker教程:从头基于空镜像scratch创建一个新的Docker镜像

    从头基于空镜像scratch创建一个新的Docker镜像 我们在使用dockerfile构建镜像时 一种方式是使用预制镜像 这样可以省很多工作量 但问题是镜像会变得特别大 尤其是安装一些应用程序所需的依赖后 镜像的尺寸会更大 如果我们的需求
  • 鼠标点击页面出现富强自由等文字JS特效

    在其他博客看到一款JS特效 感觉很不错 所有网上收集过来分享给大家 效果参考本网站 添加点击特效 点击页面会显示 富强 民主 文明 和谐 自由 平等 公正 法治 爱国 敬业 诚信 友善 把以下代码添加到当前主题的head php或foote
  • 防止内存泄露 Linux下用Valgrind做检查

    用C C 开发其中最令人头疼的一个问题就是内存管理 有时候为了查找一个内存泄漏或者一个内存访问越界 需要要花上好几天时间 如果有一款工具能够帮助我们做这件事情就好了 valgrind正好就是这样的一款工具 Valgrind是一款基于模拟li
  • Linux的目录切换和用户管理

    切换目录 在使用linux系统的时候 会用cd来切换目录 cd 切换到根目录 cd 切换到主目录 cd 切换到之前工作目录 cd 虽然很方便但只能保存一次目录 pushd命令使用目录堆栈可以把多个目录存放起来 配套使用pushd popd
  • spark_hadoop集群搭建自动化脚本

    bin bash 脚本使用说明 1 使用脚本前需要弄好服务器的基础环境 2 在hadoop的每个节点需要手动创建如下目录 data hdfs tmp 3 修改下面的配置参数 4 脚本执行完备后需要收到格式化namenode
  • begin to drop messages due to rate-limiting

    对于syslog保存的日志会有很多重要信息 但是一旦打印的日志数量超过设置的阈值 就会丢掉 imuxsock pid 48 begin to drop messages due to rate limiting 这是在调试时不愿看到的 可以
  • Linux shell中if [ $? -eq 0 ] 语句作用:判断命令是否执行成功

    shell脚本中 是指上一次命令执行的成功或者失败的状态 如果成功就是0 失败为1 语句if eq 0 是判断if语句的上一个命令执行如果成功就执行if中的语句 否则就执行else中的内容 note 使用时要注意 if后面的中括号 eq 0

随机推荐

  • ubuntu16.04 cuda8.0 caffe 编译时遇到 caffe fatal error: cublas_v2.h 没有那个文件或目录

    caffe 配置参考 http blog csdn net leo xu06 article details 53010900 make caffe的过程中碰过 include caffe util device alternate hpp
  • WEB---在删改查:

    数据库 SQLyog Ultimate v12 09 64 bit MySQL 5 7 27 log Database myshool 40101 SET NAMES utf8 40101 SET SQL MODE 40014 SET OL
  • 如何在 Java 中进行日志记录

    您可以使用本指南为您的应用程序发现 理解和使用正确的 Java 日志库 例如 Log4j2 Logback 或 java util logging 日志 似乎 是一个非常简单的主题 但在实践中可能相当棘手 并且没有在任何地方进行足够详细的介
  • webpack处理样式资源(css less sass scss)

    Webpack 本身是不能识别样式资源的 所以我们需要借助 Loader 来帮助 Webpack 解析样式资源 一 处理css样式资源 去项目根目录新建css文件夹 在css文件夹下新增index css文件 内容如图 在src main
  • Linux服务器开发——epoll模式web服务器代码

    Linux服务器开发 epoll模式web服务器代码 1 main c 2 epoll server c 2 1 初始化epoll树 初始化监听的描述符 2 2 接受新的连接请求并上树 2 3 已经在树上的进行读数据 2 4 http请求解
  • html的初步认识

    HTML 英文 Hyper Text Markup Languag的缩写 中文翻译为 超文本标记语言 主要通过HTML标签对网页中的文本 图片 声音等等内容进行一个描述 html的骨架
  • 布线问题(队列式分支限界)

    计算机算法设计与分析 第5版 王晓东著 p178 0 电路板中可行的方格 1 障碍物 2 起点 是按课本上来的 初始起点设为2 是为了和 0 1进行区分 起点 1 1 终点 4 6 1 path 数组是存放的起点到终点的路径方格 2 电路板
  • Vim使用学习以及ideaVim(持续补充)

    Vim使用学习以及ideaVim 我的ideaVim配置 文章目录 Vim使用学习以及ideaVim 方向 nomral模式 进入插入模式 删除命令 粘贴命令 拷贝命令 替换命令 修改命令 motion 表示操作范围的指令 文件信息 可视模
  • form表单传递实体类对象,后台接收

    1 新建实体类 public class Student String Idnumber String Studentnumber String username String password String name String int
  • FreeRTOS任务的挂起和恢复

    目录 说明 一 任务挂起与恢复 1 1 什么是任务挂起 1 2 任务挂起函数 1 3 什么是任务恢复 1 4 任务恢复函数 1 5 什么是中断任务恢复函数 1 6 中断任务恢复函数 二 任务挂起与恢复实例代码 任务中 2 1 主要代码 2
  • Vue proxy 配置跨域

    vue config js文件 const defineConfig require vue cli service module exports defineConfig transpileDependencies true devSer
  • 微信小程序和微信小游戏的区别

    本人小程序 小游戏 开发新手 看了几天文档 才大概搞明白微信小程序和微信小游戏的区别 首先大家口中所说的 小程序 这个概念有两个意思 一种是 小程序平台下的全部类型的项目 这样的话 就是不区分小程序项目和小游戏项目的概念 是大家一般口中所说
  • SQL语句(多表关系)

    第1章 多表关系实战 1 1 实战1 省和市 l 方案1 多张表 一对多 l 方案2 一张表 自关联一对多 1 2 实战2 用户和角色 l 多对多关系 1 3 实战3 角色和权限 l 多对多关系 1 4 实战4 客户和联系人 可选 l 一对
  • 什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

    这个问题主要讲Xcode编译器的认知 在学习iOS之前有必要学习一下Objective C的编译环境 在了解LLVM和Clang之前 先得了解一下什么是编译器 编译器是一种计算机程序 它将某种编程语言 高级编程语言 写成的源代码转换成另一种
  • 马哥SRE第八周课程作业

    redis lvs nginx 一 redis搭建哨兵原理和集群实现 1 1 哨兵 1 1 1 redis Sentinel介绍 1 1 2 实现哨兵架构 1 1 3 哨兵需要先实现主从复制 1 1 4 编辑哨兵配置 1 1 5启动哨兵服务
  • Debian的服务(service)管理

    相比较RH系列的ntsysv Debian也有个类似的服务管理软件rcconf 这是个很简单的管理软件 通过文本窗口管理 想使用他同样需要下载安装 apt get install rcconf 然后在shell下输入rcconf就可以了 当
  • 蓝桥算法训练-拿金币

    问题描述 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 输入格式 第一行输入一个正整数n 以下n行描述该方
  • CentOS 7部署nginx 离线安装nginx 在线安装nginx(nginx安装详细教程)

    CentOS 7部署nginx 离线安装nginx 在线安装nginx nginx安装详细教程 文章目录 CentOS 7部署nginx 离线安装nginx 在线安装nginx nginx安装详细教程 1 联网安装nginx 2 离线安装N
  • 全面文档格式处理工具Aspose最新中文教程指南请查收!

    Aspose Total是一个完整的文档管理工具包 可让您创建 操作和转换各种Microsoft Office文档格式 PDF Web和图像格式 同时还使您可以处理电子邮件 OCR 3D和条形码等等 不仅如此 Aspose Total适用于
  • 记录一linux命令:xargs

    转自 http www sudu cn info html edu linux 20080102 290238 html xargs 大多数 Linux 命令都会产生输出 文件列表 字符串列表等 但如果要使用其他某个命令并将前一个命令的输出