Linux常用命令——xargs命令

news2025/1/19 8:12:25

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand)

xargs

给其他命令传递参数的一个过滤器

补充说明

xargs 命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。

xargs 命令用法

xargs 用作替换工具,读取输入数据重新格式化后输出。
定义一个测试文件,内有多行文本数据:

cat test.txt

a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z

多行输入单行输出:

cat test.txt | xargs

a b c d e f g h i j k l m n o p q r s t u v w x y z

使用 -n 进行多行输出

-n 选项多行输出:

cat test.txt | xargs -n3

a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z

使用 -d 分割输入

-d 选项可以自定义一个定界符:

echo "nameXnameXnameXname" | xargs -dX

name name name name

结合**-n 选项**使用:

echo "nameXnameXnameXname" | xargs -dX -n2

name name
name name

读取 stdin

读取 stdin,将格式化后的参数传递给命令
假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:

#!/bin/bash
#sk.sh 命令内容,打印出所有参数。

echo $*

arg.txt 文件内容:

cat arg.txt

aaa
bbb
ccc

结合 -I 选项

xargs 的一个选项 -I,使用 -I 指定一个替换字符串{},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

cat arg.txt | xargs -I {} ./sk.sh -p {} -l

-p aaa -l
-p bbb -l
-p ccc -l

复制所有图片文件到 /data/images 目录下:

ls *.jpg | xargs -n1 -I cp {} /data/images

结合 find 命令使用

xargs 结合 find 使用
用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用xargs去避免这个问题:

find . -type f -name "*.log" -print0 | xargs -0 rm -f

xargs -0 将\0作为定界符。
统计一个源代码目录中所有 php 文件的行数:

find . -type f -name "*.php" -print0 | xargs -0 wc -l

查找所有的 jpg 文件,并且压缩它们:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

打印出执行的命令

结合-t选项可以打印出xargs执行的命令

ls | xargs -t -I{} echo {}

会输出当前目录下的文件列表和执行的 echo 命令

使用 -p 选项确认执行的命令

-p选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用-p参数,比如,查找当前目录下.log文件,每一次删除都需要确认:

find . -maxdepth 1 -name "*.log" | xargs -p -I{} rm {}

执行多个命令

使用-I选项可以让xargs执行多个命令

cat foo.txt
one
two
three

cat foo.txt | xargs -I % sh -c 'echo %; mkdir %'
one
two
three

ls
one two three

其他应用

xargs 其他应用
假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs 下载所有链接:

cat url-list.txt | xargs wget -c

子 Shell(Subshells)

运行一个 shell 脚本时会启动另一个命令解释器.,就好像你的命令是在命令行提示下被解释的一样,类似于批处理文件里的一系列命令。每个 shell 脚本有效地运行在父 shell(parent shell) 的一个子进程里。这个父 shell 是指在一个控制终端或在一个 xterm 窗口中给你命令指示符的进程。

cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5

如果 cmd2 是 cd /,那么就会改变子 Shell 的工作目录,这种改变只是局限于子 shell 内部,cmd5 则完全不知道工作目录发生的变化。子 shell 是嵌在圆括号 () 内部的命令序列,子 Shell 内部定义的变量为局部变量。
子 shell 可用于为一组命令设定临时的环境变量:

COMMAND1
COMMAND2
COMMAND3
(
  IFS=:
  PATH=/bin
  unset TERMINFO
  set -C
  shift 5
  COMMAND4
  COMMAND5
  exit 3 # 只是从子 shell 退出。
)
# 父 shell 不受影响,变量值没有更改。
COMMAND6
COMMAND7

reference

  • https://shapeshed.com/unix-xargs/

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand)

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand)
原文链接

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

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

相关文章

python--城堡保卫战

实现功能: 1:敌人的绵绵不断的前进,拿着各种各样的武器(叉子,斧头,宝剑),挥动武器攻击我方城堡,对我方城堡造成伤害! 2:我方城堡发现敌人可手动…

Linux-文件系统

Windows文件系统 在Windows下,打开“计算机”,我们看到的是一个个驱动盘符。 注意:盘符与硬件不是对应的,比如说电脑有有一块硬盘,到Windows下可以将其切成C、D、E盘,也就是一个硬盘可以放多个盘符。 Lin…

maple-example简单操作示例

好久都没写博客了,今天学习到一点新知识,在这里小编和大家分享,欢迎大家指点,这篇文章是关于 maple-example的简单操作示例,具体软件下载不做讲解,谢谢!

浅谈分辨率带宽RBW

频谱仪是射频工程师最常用的设备之一,信号的频率、功率、谐波、相位噪声等诸多射频参数都需要使用频谱仪测试。使用频谱仪时,有一个参数需要经常设置,就是分辨率带宽(Resolution BW,简称RBW)。RBW是指中频链路上最小的中频滤波器带…

Enhance the Visual Representation via Discrete Adversarial Training

在自然语言处理NLP中,AT可以从泛化中受益,我们注意到AT在NLP任务中的有优点可能来自于离散和符号输入空间。为了借鉴NLP风格AT的优势,我们提出了离散对抗训练(DAT)。DAT利用VQGAN将图像数据改为离散的类似文本的输入&a…

Vuex的学习内容

本教程使用的是vue3 1.核心概念 官网地址:https://vuex.vuejs.org/安装(固定)配置项(固定) 2. 图示关系 单一定义store对象,里面5个配置项,在任意组件可以使用. 3.案例准备 准备两个组件AddItem.vue、SubItem.vue、Main.vue 展示效果如下: AddItem代码 <template&…

STL - String容器

1. string基本概念 本质&#xff1a; string是C风格的字符串&#xff0c;而string本质上是一个类 string和char *的区别&#xff1a; char *是一个指针 string是一个类&#xff0c;类内部封装了char *,管理这个字符串&#xff0c;是一个char *型的容…

本地小说阅读网站打造

目录 一、本地小说网站总体组织框架 1、所需的VUE库和elementLib以及JQ库 2、本地目录设计 3、整体代码样式 二、正文核心代码 1、引入element 样式&#xff0c;和自定义的样式 2、引入JS 3、自定义Header组件 1&#xff09;vue 定义MyHeader组件 2&#xff09;MyHead…

Mapstruct的具体介绍与使用

我是 ABin-阿斌&#xff1a;写一生代码&#xff0c;创一世佳话&#xff0c;筑一览芳华。 如果小伙伴们觉得我的文章不错&#xff0c;记得一键三连哦 文章目录一、mapstruct简介二、mapstruct与其他映射对比三、mapstruct底层原理解析1、Java动态编译四、具体使用1、依赖导入2、…

Linux开发工具的使用(三)

文章目录Linux开发工具的使用&#xff08;三&#xff09;1. 缓冲区1.1 理解\r和\n1.2 缓冲区的初步理解1.3 倒计时小程序实现1.4 进度条小程序实现2. 分布式版本控制系统-git使用2.1 git历史2.2 git版本控制理解2.3 git使用2.3.1 gitee搭建远程仓库2.3.2 开始配置3. Linux调试器…

Revit教程:创建“幕墙竖梃族”的方法步骤

幕墙竖梃族分为两个组成部分&#xff1a;“幕墙竖梃”和“公制轮廓-竖梃”&#xff0c;前者是基于后者轮廓的一个实体拉伸&#xff0c;两者的关系类似于实体与草图。轮廓族及门窗族 (公制门-幕墙&#xff0c;公制窗-幕墙而非公制门与公制窗)可以嵌套入CAD详图或Revit详图&#…

93、【树与二叉树】leetcode ——222. 完全二叉树的节点个数:普通二叉树求法+完全二叉树性质求法(C++版本)

题目描述 原题链接&#xff1a;222. 完全二叉树的节点个数 解题思路 1、普通二叉树节点个数求法 &#xff08;1&#xff09;迭代&#xff1a;层序遍历BFS 遍历一层获取一层结点 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode …

【九】Netty HTTP+XML协议栈开发

HTTP协议介绍业务场景流程图技术栈设计流程图的分析:Step 1Step2Step3Step4Step5分析结果开发开发流程图代码jar 依赖代码结构如图pojo 包request包response 包client 包server包编码解码基类代码说明测试服务端打印结果客户端打印结果总结介绍 由于HTTP协议的通用性&#xff…

使用js实现一个可以【放烟花】的小游戏

放烟花游戏需求&#x1f447;核心玩法&#x1f447;&#x1f447;界面原型&#x1f447;&#x1f447;成品演示&#x1f447;游戏开发1.游戏素材准备2.代码实现1.创建index.html页面2.首页-开始3.加载烟花音效4.重玩儿放烟花的小游戏。点击页面放烟花。兼容移动端。 游戏需求 …

作为普通网民,这些“实用电脑神器”,值得你知道

国内软件夹缝里求生存&#xff0c;由于某些不良软件&#xff0c;许多人对于国产软件认识多为“流氓、捆绑、多广告”&#xff0c;其实并非如此&#xff0c;下面几款让你刮目相看&#xff0c;扭转观念。 1、图片视频画质增强器 这是一款功能极其强大的图片与视频画质增强器&…

阿里云数据湖3.0解决方案两度登上InfoQ 2022年度榜单

经过一个多月的层层竞选&#xff0c;【阿里云数据湖 3.0 解决方案】从 130 多个方案中脱颖而出&#xff0c;荣获 InfoQ 2022 年度中国技术力量年度榜单《十大云原生创新技术方案》&《云原生十大场景化落地方案》双料大奖&#xff0c;这是头部技术媒体对阿里云存储的再一次认…

低代码是什么?有什么优势?一文看懂LowCode

低代码到底是什么&#xff1f;用最简单的方式告诉我&#xff1f;低代码是近两年来一个很热门的概念&#xff0c;尤其是疫情的影响&#xff0c;市场对低代码的需求不断增加&#xff0c;但到底什么是低代码&#xff1f;它到底有什么好处&#xff1f;这篇就为大家解答这个问题&…

vue2.0 插槽不是响应性的

请注意插槽不是响应性的。如果你需要一个组件可以在被传入的数据发生变化时重渲染&#xff0c;我们建议改变策略&#xff0c;依赖诸如 props 或 data 等响应性实例选项。-- vm.$slots 问题描述 项目中自定了组件 widget&#xff0c;作为容器&#xff0c;其中 header 部分做了预…

SCI投稿:MDPI旗下期刊Mathematics投稿经历

最近写了篇论文&#xff0c;由于国内期刊现状&#xff08;懂的都懂&#xff09;&#xff0c;打算投国外的期刊&#xff0c;看来看去选择投MDPI旗下的Mathematics。手稿经过一轮大修之后顺利收到了Accepted&#xff0c;过程还是比较顺利的&#xff0c;记录一下投稿过程。 论文撰…

Matlab实现的FEMIC的说明书

FEMIC程序是用来反演小回路频域电磁感应数据的。要启动代码,在Matlab命令窗口中输入start,然后点击“Enter”或“返回”按钮。然后会出现FEMIC的主界面,见图1。 它由几个输入区域组成,这几个区分别实现了:加载数据,反演过程控制和最终显示。 图1 主界面 下面对这些输入…