You need to enable JavaScript to run this app. xargs命令的-I参数的语法规则是什么,该如何使用?
优惠活动
大模型
产品
解决方案
定价
更多

xargs命令的-I参数的语法规则是什么,该如何使用?

xargs -I 参数语法与使用说明

核心语法

标准使用格式如下:

<输出内容的命令> | xargs -I <自定义占位符> <要执行的目标命令>

-I 后面跟随的字符串就是你自定义的占位符,xargs会将管道传入的每一行输入内容作为一个整体,替换掉目标命令中所有和占位符一致的位置,再逐行执行替换后的命令。

注意:使用-I后xargs会强制按行拆分输入,不会默认按空格拆分内容,带空格的文件名/内容也可以正常处理,这是该参数和普通xargs用法最大的区别


实际使用示例

日常使用中大家习惯用{}作为占位符,你也可以根据需求换成任意不会和命令内容冲突的字符串:

  • 示例1:批量给当前目录所有txt文件生成备份,备份后缀加.bak
    命令:ls *.txt | xargs -I {} cp {} {}.bak
    执行逻辑:如果当前目录有a.txt、测试 文件.txt两个文件,xargs会依次执行cp a.txt a.txt.bak、cp "测试 文件.txt" "测试 文件.txt.bak",带空格的文件也不会处理出错
  • 示例2:自定义占位符批量删除指定文件
    如果你提前把要删除的文件路径存在del_list.txt里,每行一个路径,可以执行:
    命令:cat del_list.txt | xargs -I TARGET_FILE rm -rf TARGET_FILE
    这里用TARGET_FILE作为占位符,和命令逻辑对应更清晰
  • 示例3:结合find批量归档历史日志
    搜索/var/log目录下超过30天未修改的log文件,移动到归档目录:
    命令:find /var/log -type f -mtime +30 -name "*.log" | xargs -I {} mv {} /data/archive/log/
  • 示例4:批量处理文本内容
    给user_list.txt里每行存储的用户名批量发送通知邮件:
    命令:cat user_list.txt | xargs -I USER sh -c 'echo "您好USER,系统将于今晚2点进行维护" | mail -s "系统维护通知" USER'

注意要点

  • 占位符没有强制要求,只要和目标命令里的替换位置保持一致即可,避免和命令本身的参数、字符冲突就行
  • 只要开启-I参数,xargs每次只会处理一行输入、执行一次命令,不会把多行内容拼接成一次命令的参数
  • 遇到内容包含引号、特殊字符的场景,-I会自动把整行内容作为单个参数传递,不需要额外加转义符

内容的提问来源于stack exchange,提问作者cyly derder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:36:04