xargs -i和-I的区别
Posted paul8339
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xargs -i和-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.
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
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] 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]#
[[email protected] 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
[[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 参数 需要事先指定替换字符
转自
xargs的i参数 - CSDN博客 https://blog.csdn.net/luojiafei/article/details/7213489
以上是关于xargs -i和-I的区别的主要内容,如果未能解决你的问题,请参考以下文章