xargs使用技巧

xargs使用教程:在实战中学习xargs 文章目录前言xargs命令与管道的2点区别区别1:命令B有时候是不接受管道传参的区别2:管道传递参数的是字符串xargs实战场景1:xargs -i:查找指定格式的文件,并复制到别处场景2:xargs -d:指定分隔符场景3:xargs -t或者-p:命令执行之前先打印下最终要执行的命令场景4:xargs -n或者-L:我想find 多个匹配场景5:xargs -I:给参数赋值给变量 前言 xargs命令是获取标准输入来给其他命令传递参数的, 所以xargs一般与管道符(|)一起使用 其作用与管道符(|)类 阅读详情

xargs

大多数 Linux命令都会产生输出:文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file命令显示文件类型(可执行文件、ascii文本等);您可以处理输出,使其仅显示文件名,现在您希望将这些名称传递给ls-l命令以查看时间戳记。xargs命令就是用来完成此项工作的。它允许您对输出执行其他某些命令。记住下面这个来自于第1部分中的语法:

file-Lz * | grep ASCII | cut -d":" -f1 | xargs ls -ltr

让我们来剖析这个命令字符串。第一个,file-Lz *,用于查找是符号链接或者经过压缩的文件。它将输出传递给下一个命令grepASCII,该命令在其中搜索"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命令允许您这样做。最后一部分,xargsls -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

47853alert_DBA102.log

19dba102_cjq0_14493.trc

29053dba102_mmnl_14497.trc

154dba102_reco_14491.trc

43dba102_rvwr_14518.trc

77122total

(注:上述任务还可用以下命令完成:)

$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

vialert_DBA102.log dba102_cjq0_14493.trc dba102_mmnl_14497.trc
dba102_reco_14491.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选项限制单个命令行的参数个数。

下面显示了如何限制每个命令行仅使用两个参数:即使向xargsls -ltr传递五个文件,但每次向ls-ltr 仅传递两个文件。

$file * | grep ASCII | cut -d":" -f1 | xargs -t -n2 ls -ltr

ls-ltr alert_DBA102.log dba102_cjq0_14493.trc

-rw-r----- 1 oracle dba 738 Aug 10 19:18 dba102_cjq0_14493.trc

-rw-r--r-- 1 oracle dba 2410225 Aug 13 05:31 alert_DBA102.log

ls-ltr dba102_mmnl_14497.trc dba102_reco_14491.trc

-rw-r----- 1 oracle dba 5386163 Aug 10 17:55 dba102_mmnl_14497.trc

-rw-r----- 1 oracle dba 6808 Aug 13 05:21 dba102_reco_14491.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


xargs命令详解——将标准输入转为命令行参数 xargs命令的作用,是将标准输入转为命令行参数。 阅读详情

相关推荐

6、高效命令行工具:find、xargs、tr 与校验和的使用技巧

本文详细介绍了高效命令行工具 find、xargs 和 tr 的高级用法,以及如何使用文件校验和(如 md5sum 和 sha1sum)确保数据的完整性。通过丰富的示例,展示了这些工具在文件搜索、文本转换、批量处理及数据验证等方面的应用技巧,并提供了结合实际场景的操作方法和最佳实践。

brandy的博客 113

xargs 命令 -I {} 参数的含义及应用

当 xargs 命令遇到 {} 符号时,它会将其替换为输入中的值,然后执行指定的命令。此命令会列出 /etc/passwd 文件中以 user 开头的用户帐户,然后根据 : 分隔符对其进行分割并只取第一列,最后使用 {} 符号将用户名作为参数传递给 xargs 命令,然后执行 sudo userdel 删除用户帐户。因此, -I{} 选项可以让我们在 xargs 命令中自定义替代字符串,使得我们能够精确地控制被传递的参数和参数之间的分隔符,这有助于构建更加复杂和准确的命令。

菜鸟先飞 1万+

Context Capture10.20 安装教程(附安装包)

ContextCapture 是一款由Bentley公司推出的实景建模软件,可以快速为各种类型的基础设施项目生成最具挑战性的反应现实环境的三维模型。

一起来交流学习吧 2万+

xargs命令详解

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令行进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xagrs的默认命令是echo,这意味着通过管道传递给xagrs的输入将会包含换行和空白,不过,通过args的处理,换行和空白将被空格取代。 参数解释: -0:当s

sunhaoning的专栏 1088

WSL基础环境配置方案

通过以上步骤,您已经在 Windows 的 WSL 环境中成功搭建了一个完整的基础开发环境,包含 Docker、Kubernetes、Helm、kubectl、yq、Git 等工具。这套环境特别适用于在国内使用阿里云镜像服务部署和管理 Tekton,提升了开发和运维的效率和稳定性。

落魄书生的职业学习生涯 8876

npm install failed如何办?

上网搜索,说是网络配置不太对。按照如下几步,保证解决问题。在运行npm install指令时,出现如下错误。

xiezhipu的博客 880

Linux基础:xargs命令-I选项使用技巧

这篇文章使用具体示例来介绍一下xargs命令-I参数的常见使用方法。

知行合一 止于至善 1万+

cdk&java | 绘制含有丰富信息的化学反应(适合论文、网页、PPT)

package org.example; import org.openscience.cdk.DefaultChemObjectBuilder; import org.openscience.cdk.depict.DepictionGenerator; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IReaction; import org.openscience.cdk.

ASKCOS博客 898

linux 命令xargs,linux中xargs命令的各种使用技巧

前言xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧,一起来看看吧。一、将多行输入转换成单行输入:[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt[root@host1 test]# cat example.txt1 2 3 4 56 7...

weixin_31620365的博客 447

DCMTK编译

dcmtk-3.6.4 使用Unicode?dcmtk的编译选项里没有关于Unicode的选项,OFString的接口里明确使用了OFString(char*)作为构造函数参数,所以,我们可以假设不能够自己擅自在CMakeList.txt里增加一行 add_definitions(-DUNICODE -D_UNICODE) 来强制使用Unicode编码。 亲测:加了之后编译不过 void...

C++ 爱好者 make_it_simple888 1734

下载猫 —— 会员体系安全分析与加固方案

下载猫的会员验证体系完全失效,破解不需要任何工具链、不需要写代码、不需要改文件。已验证的成功攻击路径:攻击者启动软件时加一个参数,然后用 3 行 JavaScript 即可将会员状态改为"有效期至 2099 年",全部功能闸门放行。等价于普通用户按F12打开控制台输入 3 行代码,全程不到 10 秒。项目结论破解难度⭐ 极低(会按 F12 即可,无需任何破解工具)是否修改文件否(重启软件自动恢复)是否需要服务器否是否影响其他用户单人即可完成,可复制分发修复所需工作量。

猫敷雪 54

linux之xargs使用技巧

Unix命令都带有参数,有些命令可以接受”标准输入(stdin)”作为参数。而管道命令(|)的作用,是将左侧命令的标准输出转换为标准输入,提供给右侧命令作为参数使用。虽然,在 Unix 系统中大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。比如,我们日常使用的 echo 命令就不接受管道传参。而 xargs 命令的作用,就是将标准输入转为命令行参数。 xargs基本用法 # grep命令接受管道传参 > cat /etc/passwd | grep r..

Linux,Java,SpringBoot,Python,Lua略知一点 446

CAN总线介绍及硬件设计

1. CAN是什么 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很 多,线束的数量也随之增加。为适应“减少线束的数量”、“......

sinat_15677011的博客 9992

linux命令中xargs,linux中xargs命令的各种使用技巧

前言xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧,一起来看看吧。一、将多行输入转换成单行输入:[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt[root@host1 test]# cat example.txt1 2 3 4 56 7...

weixin_39992788的博客 390

Magisk如何针对性隐藏Root避免被检测

Magisk隐藏特征码有两种途径,一种是通过插件,一种是定制源码。插件的方式相对简单,但是使用范围也有限,好处是成本低好上手。定制源码难度大,成本高,好处是稳定,后续也好更新维护。

zhonglunshun的专栏 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Linux小知识:xargs命令的使用与技巧

xargs命令是Linux系统中一个非常实用的工具,它能够将标准输入的数据转换为命令行参数,并传递给其他命令执行。通过合理使用xargs命令及其选项和参数,我们可以方便地处理由其他命令生成的输出数据,实现批量操作和数据转换。然而,在使用时也要注意安全性和输入数据的处理方式,以避免潜在的问题。希望本文能够帮助大家更好地了解和使用xargs命令。

qq787387207的博客 1062

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

linux xargs命令选项,Linux基础:xargs命令-I选项使用技巧

Linux基础:xargs命令-I选项使用技巧2020-06-25 12:08阅读数 69这篇文章使用具体示例来介绍一下xargs命令-I参数的常见使用方法。<>GNU args vs 其他注意不同的情况下xargs的使用可能会有细节上的区别,而这些可以通过man来确认,比如CentOS 7下man的内容清晰地提示,这是GNU版本的xargs而MacOS上的说明可能是这样的:需要注意的...

weixin_39802055的博客 508

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

find xargs exec使用技巧

参考文章:http://www.bfcat.com/index.php/2012/07/find-xargs/ 1、exec 删除三天以前的所有东西 find . -ctime +3 -exec rm -rf {} \; "{}" 表示参数 最后的 “\;” 是必须的 2、xargs删除 find ./ -mtime +3 -print|xargs rm -f –r 因为x

zhoutong12589的专栏 583

xargs很重要的技巧

一般用到此命令是在find 语句中,不仅于此。 cat example.txt # 样例文件 1 2 3 4 5 6 7 8 9 10 11 12 $ cat example.txt | xargs 1 2 3 4 5 6 7 8 9 10 11 12cat example.txt | xargs -n 3 1 2 3 4 5 6 7 8 9 10 11 12echo “spl

xieguifeng的博客 358

shell基础二:查找技巧,find及xargs的使用

 shell基础二:查找技巧,find及xargs的使用<!--google_ad_client = "pub-3707276699544226";google_ad_width = 200;google_ad_height = 200;google_ad_format = "200x200_as";google_ad_type = "text_image";goo

大周辞寒的专栏 1277

查找技巧,find及xargs的使用

find 命令的一般形式为: find pathname -options [-print -exec -ok] 如下为该命令的参数: pathname:find命令所查找的目录路径。例如用.來表示当前目录,用/來表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应的形式为‘com

唯手熟尔 715

xargs使用技巧 —— 筑梦之路

命令都带有参数,有些命令可以接受”标准输入(stdin)”作为参数。而管道命令(|)的作用,是将左侧命令的标准输出转换为标准输入,提供给右侧命令作为参数使用。虽然,在 Unix 系统中大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。比如,我们日常使用的 echo 命令就不接受管道传参。而 xargs 命令的作用,就是将标准输入转为命令行参数。注意:xargs 后面的默认跟的是 echo 命令,所以它可以单独使用......

筑梦之路 1329

xargs后面跟函数的技巧

无独有偶需要用到xargs 后面接自定义函数的功能,费劲周折终于找到了办法。 测试脚本文件mytest.sh的内容(下面的内容是有误的) #!/bin/sh Mytest() {   echo $1 } find /var/www -name "*.js" | xargs -n 1 Mytest $1 上面的这中方法是会报找不到Mytest的错误的;思考一下就能找到答案。 因为M...

weixin_30252709的博客 1048
上一篇: vim替换字符串
下一篇: 关于ARM协处理器CP15及MCR和MRC指令
legendmaker
博客等级 码龄18年 9粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值