xargs的i参数

xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如

# find . -type f -name "*.log" | xargs rm -rf *

就将以log结尾的文件删除了,如果我想去移动或者复制就需要使用参数来代替了。

xargs  -i 参数或者-I参数配合{}即可进行文件的操作。

-I replace-str
              Replace  occurrences  of  replace-str  in the initial-arguments with names read from standard input.  Also, unquoted blanks do not terminate
              input items; instead the separator is the newline character.  Implies -x and -L 1.

--replace[=replace-str], -i[replace-str]
              This option is a synonym for -Ireplace-str if replace-str is specified, and for -I{} otherwise.  This option is deprecated; use -I  instead.

man了一下看的还是不太懂,通过例子,做作实验将我的理解写一下。

############### 操作的目录下的文件###############

[[email protected] ab]# ls
1kk.zip  3kk.zip  5kk.zip  b.rar  d.rar  f.rar  h.rar  j.rar  mini.txt  ni.txt
2kk.zip  4kk.zip  a.rar    c.rar  e.rar  g.rar  i.rar  k.rar  nii.txt

###################使用 i 参数 ##################
[[email protected]05 ab]# find . -type f -name "*.txt" | xargs -i cp {}  /tmp/k/
[[email protected] ab]# ls ../k/
mini.txt  nii.txt  ni.txt
[[email protected] ab]#

###################  使用 I  参数 ################
[[email protected] ab]# find . -type f -name "*.txt" | xargs -I {} cp {}  /tmp/n/
[[email protected] ab]# ls ../n/
mini.txt  nii.txt  ni.txt

结果出来了,

加-i 参数直接用 {}就能代替管道之前的标准输出的内容;

加 -I 参数 需要事先指定替换字符

时间: 2024-08-09 23:56:10

xargs的i参数的相关文章

xargs的- n1参数

起因在对一堆*.tar.gz文件解压缩时,发现tar xvfz *.tar.gz不管用,一查,原来是tar xvfz *.tar.gz会被shell给拆成tar xvfz a.tar.gz b.tar.gz c.tar.gz,而在a.tar.gz中不存在b.tar.gz,当然会报错. 解决方法是使用脚本,写法很多,其中一种是:  for i in $(ls *.tar);do tar xvf $i;done或:for tar in *.tar.gz; do tar tvfz $tar;done

xargs标准输出作为参数 给命令 echo file{1..10}| xargs touch

xargs标准输出作为参数 给命令 echo file{1..10}| xargs touch file1 ...file10 作为文件名 被xargs 一个一个传给 touch echo {1..10} |xargs -n 2 echo 配置 1 2 之后就换行 [07:29:04 [email protected] /]$echo {1..10} | xargs -n 2 echo 1 23 45 67 89 10 [07:30:11 [email protected] /]$echo {1

xargs参数位于指定位置。

xargs通常配合管道使用,将前面命令产生的参数,逐个传入后续命令,作为参数.比如: $ ls *1223.log | xargs rm xargs传来的参数,默认位于 xargs 后面命令的最后,若需要将参数传入指定位置,需要加 -I 参数,比如像将 *1223.log 移动到 log_1223 的目录下: $ ls *1223.log | xargs -I {} mv {} log_1223 原文地址:https://www.cnblogs.com/minglee/p/12095952.ht

linux下xargs命令用法详解 【转】

xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此 这个命令也是后置引用的一个强有力的替换.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功.通常情况下,xargs从管道或 者stdin中读取数据,但是它也能够从文件的输出中读取数据.xargs的默认命令是echo.这意味着通过管道传递给xargs的输入将

每天一个 Linux 命令(21):find命令之xargs

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是"参数列太长"或"参数列溢出".这就是xargs命令的用处所在,特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先获取的一

每天一个linux命令(21):find命令之xargs

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是“参数列太长”或“参数列溢出”.这就是xargs命令的用处所在,特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先获取的一部分文件,然后是下一批,并如此

对find,xargs,grep和管道的一些深入理解

转自于:http://fatmouse.xyz/2016/05/10/2016-05-10-find-grep-xargs-and-pipe/ 问题 相信大家都知道在目录中搜索含有固定字符串文件的命令: 1 find . -name '*.py' |xargs grep test 刚开始的时候,我不熟悉xargs命令,所以直接使用的命令是 1 find . -name '*.py' |grep test 结果并不是自己所期望的.此命令只是找出文件名*.txt有test的情况. 这里我就研究一下,

转 linux下xargs命令用法详解

xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此 这个命令也是后置引用的一个强有力的替换.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功.通常情况下,xargs从管道或 者stdin中读取数据,但是它也能够从文件的输出中读取数据. xargs的默认命令是echo.这意味着通过管道传递给xargs的输

linux命令学习笔记(21):find命令之xargs

xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs的作用一般等同于大多数Unix shell中的反引号,但更加灵活易用,并可以正确处理输入中有空格等特殊字符的情况.对于经常产生大量输出的命令如find.locate和grep来说非常有用. 在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系 统对能够传递给exec的命令长度有限制,这样在