xargs用法

zengkefu zengkefu     2022-08-21     747

关键词:

 

http://m.blog.csdn.net/article/details?id=44875865

 

为啥要xargs?

通常linux命令可以用|首尾相连,上一个命令的 stdout 连接到下一个命令的 stdin。但是有些命令,比如lsrm等,是从命令行参数接受输入的。这时候如果想把上一个命令的输出传给它们,就不好办了。所以就有了xargs

简单而言,xargs可以把从 stdin 接受到的输入,用空白符分隔开,然后依次作为参数去调用xargs后面的命令。

用法

举个例子,想把所有.jpg文件删除,当然你可以rm *.jpg,但是如果要递归操作所有子目录下的文件呢?

可以这样:

find . -name "*.jpg" | xargs rm
  • 1

这样,所有被find找到的文件名,都会作为参数来调用rm命令了。

对于大多数情况,这一行命令没有问题,但是如有些文件名中包含空格,就会有问题了。xargs默认以空白符分隔接受到的输入,所以一个含有空格的文件名会被当做多个参数,分别传给rm。所以在处理文件名这类命令时,通常要这样:

find . -name "*.jpg" -print0 | xargs -0 rm
  • 1

这里的-print0是告诉find命令,在每个输出后面以‘‘作为结束。-0是告诉xargs,使用‘‘来分隔输入,而不是空白符。这样就避免出现问题了。

下面再考虑另一种情况,假设不是删除,而是想把符合要求的文件名都添加上后缀.bak怎么办?这时候需要这样:

find . -name "*.jpg" -print0 | xargs -0 -I {} mv {} {}.bak
  • 1

其中的-I {}是告诉xargs,后面的命令中,用{}表示占位符,将会被实际的参数替代。这样就行了。

其他有用的参数还有: 
-n 用于指定每次传递几个参数 
-d 用于指定切分输入内容时,具体的分隔符 
其他更多的参数,就参考man xargs吧。

xargs用法详解(代码片段)

Xargs用法详解简介之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:find/sbin-perm+700|ls-l这个命令是错误的find/sbin-perm+700|xargsls-l这样才是正确的xargs可... 查看详情

find-print0和xargs-0原理及用法(代码片段)

平常我们经常把find和xargs搭配使用,例如:find.-name"*.txt"|xargsrm但是这个命令如果遇到文件名里有空格或者换行符,就会出错。因为xargs识别字符段的标识是空格或者换行符,所以如果一个文件名里有空格或者换行符,xargs就会把... 查看详情

xargs

Xargs用法详解1.简介:  xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能... 查看详情

[转]-xargs分析

...了很多书关于xargs的介绍,都只是简单的介绍了它的几个用法,却没有介绍它工作的原理,man也只有简单的介绍,并没有说各个选项之间配合时的情况。所以我只能自己探索了,探索的路上确实充满了荆棘,不断的总结却不断的... 查看详情

xargs命令教程(代码片段)

...一个很有用的命令,但是常常被忽视,很多人不了解它的用法。本文介绍如何使用这个命令。一、标准输入与管道命令Unix命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。$cat/etc/passwd|greproot上面的代码使用了管... 查看详情

linux命令--xargs(将命令的结果作为参数)(代码片段)

...出鞘的博客-CSDN博客简介    本文介绍Linux的xargs命令的用法。xargs的作用概述        xargs是给命令传递参数的一个过滤器,也是组合多个命令的工具。        xargs默认的命令是echo,这意味着通过管道传递给xargs... 查看详情

xargs与exec详解

..../-perm+700|ls-l这样才是正确的1find./-perm+700|xargsls-l 二、用法123456789101112[[email protected]tmp]#xargs--helpUsage:xargs[-0prtx][--interactive][--null][-d|--delimiter=delim]       [-Eeof-str][-e[eof-str]] [--eof[=eof-str]]  ... 查看详情

管道的概念和一些用法初步认识三剑客(代码片段)

第一章.管道1.1管道的概念简单来说管道就是将前面命令处理的结果传递给后面的命令1.2管道与|xargs(管道xargs)的区别find |xargsls-ld##把前一个命令的结果,通过管道传递给后面的命令(ls-ld),传递的是文件名find |命令 &nb... 查看详情

find删除拷贝用法

find /usr/local/tomcat/logs/  -mtime +30 -exec rm -rf {} ;find /usr/local/tomcat/logs/  -mtime +30 |xargs rm -rf;将通过fin 查看详情

gitgrep的一些用法

https://www.kernel.org/pub/software/scm/git/docs/git-grep.html 把所有本地分支包含某个字符的行列出来,把含有master的列出来gitbranch|sed‘s/*//g‘|xargs-igitgrep-nmaster{}shell的写法:#!/bin/basha=$(gitbranch|sed‘s/*//g‘)foriin${ 查看详情

[转]xargs命令详解,xargs与管道的区别

...//www.cnblogs.com/wangqiguo/p/6464234.html 阅读目录为什么要用xargs,问题的来源xargs是什么,与管道有什么不同xargs的一些有用的选项回到顶部为什么要用xargs,问题的来源在工作中经常会接触到xargs命令,特别是在别人写的脚本里面... 查看详情

linux20题-生信技能树

...考技术A知识点:mkdir-ptouchfilename#创建文件知识点:touch的用法知识点:vimorviorsed编辑文本知识点:rm命令rm(-r)filenameorfile.txt#删除(彻底)文件或文件夹,由于Linux系统没有垃圾桶,要慎用删除文件,可以rm-ifilename删除前询问知识点... 查看详情

ls另类用法

通常ls列出的文件,想直接管道通过rm-rf删除是无效的.这时就要配合命令xargs使用了:例如:ls-t|tail-10|xargsrm-rf  //按时间排序,删除最后的10个文件      ls-lt|tail-100|awk‘{print$9}‘|xargsrm-rf   &nbs 查看详情

xargs

xargs紧跟在管道操作符之后,它使用标准输入作为主要的数据源例如:ls*.c|xargsgrepmainxargs默认会执行echo命令1.将多行输入转换成单行输出catexample.txt|xargs2.将单行输入转换成多行输出catexample.txt|xargs-n3xargs工作原理:xargs命令接受来... 查看详情

xargs命令

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其... 查看详情

xargs命令

xargs命令常用工具命令xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或... 查看详情

使用 xargs 运行多个命令

】使用xargs运行多个命令【英文标题】:Runningmultiplecommandswithxargs【发布时间】:2011-10-2023:35:22【问题描述】:cata.txt|xargs-I%echo%在上面的示例中,xargs将echo%作为命令参数。但在某些情况下,我需要多个命令来处理参数而不是一个... 查看详情

xargs命令初了解

想检查下系统里用户的计划任务,百度了下,发现有个脚本命令对其中的xargs有点不台清楚,了解了下大概释义如下:xargs一般和管理配合使用,将前面管道结果分割成xargs后面所接命令的参数 查看详情