linux 中 xargs 中的 -i选项

发布时间 2023-05-08 11:44:00作者: 小鲨鱼2018

 

001、不使用 -i选项

[root@PC1 test]# ls
abva  abvb  abvc  abvd  dir1  dir2  dir3  dir4  dir5
[root@PC1 test]# ls | xargs mv {} {}.bak     ## 不使用 -i选项
mv: cannot stat ‘{}’: No such file or directory
mv: cannot stat ‘{}.bak’: No such file or directory
[root@PC1 test]# ls
dir5

 

002、增加-i选项

[root@PC1 test]# ls
abva  abvb  abvc  abvd  dir1  dir2  dir3  dir4  dir5
[root@PC1 test]# ls | xargs -i mv {} {}.bak       ## 使用-i选项
[root@PC1 test]# ls
abva.bak  abvc.bak  dir1.bak  dir3.bak  dir5.bak
abvb.bak  abvd.bak  dir2.bak  dir4.bak

 

将 xargs 输出的每一项参数单独赋值给后面的命令,参数需要用指定的替代字符串 REPLACE_STR 代替。REPLACE_STR 可以使用 {} $ @ 等符号,其主要作用是当 xargs command 后有多个参数时,调整参数位置。例如备份以 txt 为后缀的文件:find . -name "*.txt" | xargs -I {} cp {} /tmp/{}.bak。