xargs命令
xargs命令
xargs 命令是一个非常好用的 Linux 命令,它可以将管道或标准输入转换成命令行参数,并用这些参数来执行指定
的命令。默认情况下, xargs 命令会将输入按照空格、制表符、换行符等符号进行分隔,并将它们作为一组参数
传递给指定的命令。如果没有输入,则 xargs 命令会读取用户的键盘输入,并将其用作参数。
1、命令格式
somecommand |xargs -item command
-
-a file 从文件中读入作为 stdin
-
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时
候就停止。
-
-p 当每次执行一个argument的时候询问一次用户。
-
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-
-t 表示先打印命令,然后再执行。
-
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-
-L num 从标准输入一次读取 num 行送给 command 命令。
-
-l 同 -L。
-
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-
-x exit的意思,主要是配合-s使用。。
-
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的
吧。
2、实例1
例如,要将当前目录下所有 .txt 文件删除,可以使用下列命令:
$ echo a > a.txt
$ echo b >b.txt$ ls
a.txt b.txt$ ls *.txt | xargs rm$ ls
此命令将列出当前目录中的所有 .txt 文件,并将它们作为参数传递给 rm 命令,删除这些文件。
3、实例2
但是,在某些情况下,xargs 命令的默认行为可能不符合我们的需求。在这种情况下,可以使用 -I 选项来自定义参
数的分隔符。
-I 选项的语法是 -I <替代字符串>,它允许您在命令行中使用替代字符串来代替 xargs 接收到的参数。特别地,{}
符号通常用作替代字符串。当 xargs 命令遇到 {} 符号时,它会将其替换为输入中的值,然后执行指定的命令。
例如,要在当前目录下的所有 .txt 文件中搜索 hello 并显示匹配行的上下文,请使用以下命令:
$ echo hello > a.txt
$ echo world >b.txt$ ls
a.txt b.txt$ ls *.txt | xargs -I{} grep -C2 "hello" {}
hello
此命令将把 ls 命令的输出作为 xargs 命令的输入,并将每个文件名替换为 {}。xargs 命令会将每个文件名作为参
数传递给 grep 命令并执行它。
另一个示例是,要从用户列表中删除所有以 user 开头的用户帐户,请使用以下命令:
grep "^user" /etc/passwd | cut -d ":" -f 1 | xargs -I{} sudo userdel {}
此命令会列出 /etc/passwd 文件中以 user 开头的用户帐户,然后根据 : 分隔符对其进行分割并只取第一列,最
后使用 {} 符号将用户名作为参数传递给 xargs 命令,然后执行 sudo userdel 删除用户帐户。
因此, -I{} 选项可以让我们在 xargs 命令中自定义替代字符串,使得我们能够精确地控制被传递的参数和参数之间
的分隔符,这有助于构建更加复杂和准确的命令。
4、实例3
很多命令不支持|管道来传递参数,这时就可以使用 xargs 命令:
$ echo hello > a.txt
$ echo world >b.txt$ ls
a.txt b.txt# 错误使用
$ find ./ -name a.txt |ls
a.txt b.txt# 正确使用
$ find ./ -name a.txt |xargs ls
./a.txt
5、实例4
xargs 用作替换工具,读取输入数据重新格式化后输出。
定义一个测试文件,内有多行文本数据:
$ cat >>test.txt << EOF
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
EOF# 多行输入单行输出
$ 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 选项多行输出
$ 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 选项可以自定义一个定界符
$ echo "nameXnameXnameXname" | xargs -dX
name name name name# 结合 -n 选项使用
$ echo "nameXnameXnameXname" | xargs -dX -n2
name name
name name
6、实例5
读取 stdin,将格式化后的参数传递给命令
假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:
# sk.sh文件内容
#!/bin/bash
echo $*
# arg.txt文件内容
cat >> arg.txt << EOF
aaa
bbb
ccc
EOF
xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合
使用,每一个参数命令都会被执行一次:
$ cat arg.txt | xargs -I {} ./sk.sh -p {} -l
-p aaa -l
-p bbb -l
-p ccc -l
7、实例6
复制所有图片文件到 /data/images 目录下:
$ ls *.jpg | xargs -n1 -I {} cp {} /data/images
xargs 结合 find 使用,用 rm 删除太多的文件时候,可能得到一个错误信息:
/bin/rm Argument list too long. 用 xargs 去避免这个问题:
# xargs -0 将 \0 作为定界符
# find命令默认接的命令是-print,它默认以\n将找到的文件分隔,可以使用-print0来使用\0分隔,这样就不会分行了
$ find . -type f -name "*.log" -print0 | xargs -0 rm -f
统计一个源代码目录中所有 php 文件的行数:
$ find . -type f -name "*.php" -print0 | xargs -0 wc -l
查找所有的 jpg 文件,并且压缩它们:
$ find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
xargs 其他应用,假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:
$ cat url-list.txt | xargs wget -c
相关文章:
xargs命令
xargs命令 xargs 命令是一个非常好用的 Linux 命令,它可以将管道或标准输入转换成命令行参数,并用这些参数来执行指定 的命令。默认情况下, xargs 命令会将输入按照空格、制表符、换行符等符号进行分隔,并将它们作为一组参数 传…...
【原创】java+swing+mysql无偿献血管理系统设计与实现
摘要: 无偿献血管理系统是为了实现无偿献血规范化、有序化、高效化的管理而设计的。本文主要介绍使用java语言开发一个基于C/S架构的无偿献血管理系统,提高无偿献血管理的工作效率。 功能分析: 系统主要提供给管理员、无偿献血人员&#x…...
C语言 Number 1 基本数据类型
数据类型的定义 c语言的数据分类基本类型整型浮点型float和double的精度和范围范围精度 枚举类型空类型派生类型派生的一般表达形式 注 c语言的数据分类 首先是针对C语言的数据类型做个整理 大致分为四个大类型 基本类型枚举类型空类型派生类型 那么根据以上四个大类型 我们…...
mac录屏快捷键指南,轻松录制屏幕内容!
“大家知道mac电脑有录屏快捷键吗,现在录屏不太方便,每次都花很多时间,要是有录屏快捷键,应该会快速很多,可是哪里都找不到,有人知道吗?帮帮我!” 苹果的mac电脑以其精美的设计和卓…...
精准测试是个错误
如果你已经了解了精准测试在行业的主流做法,你可以跳过相关内容。 行业里对于精准测试的定义 在网上流传着一些精准测试的定义(如果你对这些定义不感冒,可直接跳到我个人的定义): 自网易陈逸青(2020&#x…...
算法通关村第四关|黄金挑战|表达式问题
1.计算器问题 给定一个内容为表达式的字符串,计算结果。 class Solution {public int calculate(String s) {Deque<Integer> stack new ArrayDeque<Integer>();char preSign ;int num 0;int n s.length();for (int i 0; i < n; i) {if (Chara…...
Mac安装DBeaver
目录 一、DBeaver Mac版软件简介 二、下载地址 三、DBeaver连接失败报错 3.1 问题描述 3.2 连接失败问题解决 一、DBeaver Mac版软件简介 DBeaver Mac版是一款专门为开发人员和数据库管理员设计的免费开源通用数据库工具。软件的易用性是它的宗旨,是经过精心设计…...
C++ 类 根据成员变量的指针获取类对象的指针
一.宏定义 实现方式有多种,原理是相同的 方式1: #define get_class_ptr(memberPtr,classType,memberName) \ ((classType*)((char*)(memberPtr)-(unsigned long)((ULONG_PTR)&((classType*)0)->member))) 方式2: #define get_cl…...
图论08-图的建模-状态的表达与理解 - 倒水问题为例
文章目录 状态的表达例题1题解1 终止条件:有一个数位为42 状态的改变:a表示十位数,b表示个位数3 其他设置 例题2 力扣773 滑动谜题JavaC 状态的表达 例题1 从初始的(x,y)状态,到最后变成(4,&am…...
sqlserver字符串拼接
本文主要介绍了sqlserver字符串拼接的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。 1. 概 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例&#…...
MySQL-----事务
事务的概念 事务是一种机制,一个操作序列。包含了一组数据库的操作命令,所有的命令都是一个整体,向系统提交或者撤销的操作,要么都执行,要么都不执行。 是一个不可分割的单位 事务的ACID特点 ACID,是指在可…...
hive的安装配置笔记
1.上传hive安装包 2.解压 3.配置Hive(在一台机器上即可) mv hive-env.sh.template hive-env.sh 4.运行hive 发现内置默认的metastore存在问题(1.换执行路径后,原来的表不存在了。2.只能有一个用户访问同一个表) 5.配置mysql的meta…...
lamba stream处理集合
lamba stream处理集合 带拼接多字段分组List< Object> 转 Map<String,List< Object>> Map<String, List<ProfitAndLossMapping>> collect plMappingList.stream() .collect(Collectors.groupingBy(m -> m.getLosType() ":" m.…...
操作系统 day04(系统调用)
什么是系统调用 库函数和系统调用的区别 应用程序可以通过汇编语言直接进行系统调用,也可以使用高级语言的库函数来进行系统调用。而有的库函数涉及系统调用,如“创建一个新文件”函数,有的不涉及,如“取绝对值”函数 什么功能要…...
【深度学习】pytorch——线性回归
笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 深度学习专栏链接: http://t.csdnimg.cn/dscW7 pytorch——线性回归 线性回归简介公式说明完整代码代码解释 线性回归简介 线性回归是一种用于建立特征和目标变量之间线性关系的统计学习方法。它假设…...
golang工程——中间件redis,单节点集群部署
单节点redis集群部署 部署redis 6.2.7版本 没资源,就用一台机子部 解压安装包 tar zxf redis-6.2.7.tar.gzcd redis-6.2.7编译安装 mkdir -p /var/local/redis-6.2.7/{data,conf,logs,pid}data:数据目录 conf:配置文件目录 logs…...
Lua基础
table 基本原理: table是一种特殊的容器,可以向数组一样按照索引存取,也能按照键值对存取。 local mytable {1,2,3} --相当于数组 local mytable {[1]1,[2]2,[3]3} --和上面等价 local mytable {1,2,3,[3] 4} --隐式赋值会覆盖掉显式赋…...
微信小程序之开发工具介绍
一、微信小程序开发工具下载 微信小程序开发工具下载可以参考这篇博客《微信小程序开发者工具下载-CSDN博客》 二、开发工具组成部分 如下图所示,开发者工具主要由菜单栏、工具栏、模拟器、编辑器和调试器 5 个部分组成。。 1、菜单栏 菜单栏中主要包括项目、文…...
【AUTOSAR】【以太网】DoIp
AUTOSAR专栏——总目录_嵌入式知行合一的博客-CSDN博客文章浏览阅读217次。本文主要汇总该专栏文章,以方便各位读者阅读。https://xianfan.blog.csdn.net/article/details/132072415 目录 一、概述 二、功能描述 2.1 Do...
游戏中UI的性能优化手段
UI方面有许多性能优化的技术或手段,以下是其中一些常见的例子: 惰性加载:对于长列表、大图等需要加载大量数据和资源的组件,可以采用惰性加载的方式,即在用户需要时再进行加载。这样可以减少初始加载时间和内存占用&am…...
运动生物力学数据分析全流程dz: 运动学分析:Qualysis_Vicon动作捕捉数据处理(关节角度、角速度、重心轨迹等) 动力学分析:AMTI_Kistler测力台数据处理、逆动力学计算(关节力、力
运动生物力学数据分析全流程dz: 运动学分析:Qualysis/Vicon动作捕捉数据处理(关节角度、角速度、重心轨迹等) 动力学分析:AMTI/Kistler测力台数据处理、逆动力学计算(关节力、力矩、功率) 肌电信…...
palworld-host-save-fix全攻略:解决幻兽帕鲁存档迁移难题的实战指南
palworld-host-save-fix全攻略:解决幻兽帕鲁存档迁移难题的实战指南 【免费下载链接】palworld-host-save-fix 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-host-save-fix 在幻兽帕鲁的冒险旅程中,更换服务器或迁移平台时的存档丢失问…...
ComfyUI-WanVideoWrapper显存优化终极指南:让8GB显卡也能流畅生成高清视频
ComfyUI-WanVideoWrapper显存优化终极指南:让8GB显卡也能流畅生成高清视频 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 还在为视频生成时的显存不足而烦恼吗?ComfyUI-…...
lingbot-depth-vitl14镜像兼容性说明:insbase-cuda124-pt250-dual-v7底座深度适配细节
lingbot-depth-vitl14镜像兼容性说明:insbase-cuda124-pt250-dual-v7底座深度适配细节 1. 引言:为什么你需要关注这个深度估计模型? 如果你正在做机器人、自动驾驶或者AR/VR相关的项目,肯定遇到过这样的问题:怎么让机…...
用YOLOv8在树莓派上跑个‘狗脸识别’:斯坦福犬类数据集实战与轻量化部署指南
树莓派上的智能犬种识别:YOLOv8轻量化部署全流程实战 当你在公园遛狗时,有没有遇到过路人好奇询问狗狗品种的情况?传统的犬种识别往往依赖专业兽医或资深养犬人士的经验判断,而今天我们将用一块信用卡大小的树莓派,配合…...
港科资讯|郑光廷教授出席国际科技组织发展与全球科技治理论坛 分享协作实践
2026年3 月 28 日,国际科技组织发展与全球科技治理论坛在北京中关村国际创新中心成功举办。香港科技大学副校长(研究及发展)郑光廷教授受邀出席并发表主题演讲,香港科大内地办(北京)主任袁冶老师一同参会,与中外嘉宾交…...
别再死记公式了!用Multisim仿真软件,10分钟搞懂555定时器的三种工作模式
用Multisim玩转555定时器:可视化学习三种工作模式的终极指南 记得第一次接触555定时器时,我被那些复杂的公式和抽象的工作原理搞得晕头转向。直到一位资深工程师告诉我:"别急着背公式,先看看它怎么工作。"这句话彻底改变…...
HsMod终极指南:5步打造你的专属炉石传说模改体验
HsMod终极指南:5步打造你的专属炉石传说模改体验 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架的炉石传说模改插件,为玩家提供全面的游戏体验…...
灵毓秀-牧神-造相Z-Turbo使用全攻略:从环境检查到作品输出
灵毓秀-牧神-造相Z-Turbo使用全攻略:从环境检查到作品输出 1. 镜像简介与核心功能 灵毓秀-牧神-造相Z-Turbo是一款基于Xinference部署的AI文生图模型服务,专门用于生成《牧神记》中灵毓秀角色的高质量图像。该镜像集成了Gradio交互界面,让用…...
每日算法题 21---54.螺旋矩阵
题目54.螺旋矩阵要求给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例思路核心思路是用边界圈定遍历范围,按照固定方向循环遍历,每遍历完一条边就收缩对应边界,直到边界交叉终止&…...
