xargs指定参数的位置

更新:
下面写错了,-I其实是replace的意思,-I后面还要指定一个replace-str,表示把后面命令中的这个参数替换为前面管道传递过来的字符串,比如,下面应该写为

find /etc/doc -name "*.pdf" | grep "man" | xargs -I '{}' ln -s {} ./
或者
find /etc/doc -name "*.pdf" | grep "man" | xargs -I pdf_files ln -s pdf_files ./
或者
find /etc/doc -name "*.pdf" | grep "man" | xargs -i ln -s {} ./

小写的-i带参数时和大写的-I是一模一样的,小写的-i可以不带参数,这时候相当于大写的-I {}。
不过手册里面不建议使用小写的-i,可能会有什么问题


xargs加上-I(这里手册建议使用大写的-I)后就可以用{}表示管道传过来的参数放到该位置

比如:

find /etc/doc -name "*.pdf" | grep "man" | xargs -I ln -s {} ./

表示把/etc/doc目录下的带有man关键字的pdf找出来,并且在当前目录创建相应的软连接。

手册上建议的是用大写的I,但是好像有时候要用小写的i才是预期的效果,这个需要具体测试一下

原文地址:https://www.cnblogs.com/reasoner/p/14200297.html