grep -Ilr 3306 ./ | xargs -n1 -- sed -i 's/root:password/real_user:real_password/g'
另还有一种使用xagrs的写法:
ls *.tar.gz|xargs -n1 tar tvfz
关键就在于这个xagrs的-n1参数是什么意思呢?
n1应该是指每次只传递一个参数给args命令,有高人写过如下脚本对比,非常能说明问题:
echo "1 2 3 4"|xargs -n1
1
2
3
4
echo "1 2 3 4"|xargs -n2
1 2
3 4
echo "1 2 3 4"|xargs -n3
1 2 3
4
这样,若加n1参数,则*.tar.gz会拆成每个tar.gz文件后,一个一个传给tar tvfz命令,这样就解决了问题。.
-- A -- signals the end of options and disables further option processing. Any arguments after the -- are treated
as filenames and arguments. An argument of - is equivalent to --.
如果没有记错的话,这个‘--’应该是表示选项的结束,也就是说后面的都是参数了,不再有选项存在。 这个应该主要是为了避免 后面的参数是以'-'开头的时候被识别为选项。 加上'--'以后,后面的参数即使是以‘-’开头,grep仍将其作为参数处理,而非一个选项。
好像POSIX命令都支持'--'选项,不知道这个有没有记错。
https://book.open-falcon.org/zh_0_2/quick_install/backend.html
https://www.cnblogs.com/softidea/p/3765222.html