You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合xargs与sed实现文件路径重命名?

问题原因与解决方法

问题根因

你写的命令里,反引号包裹的sed命令会被外层shell提前解析执行,此时xargs的{}还没被替换成实际的路径字符串,sed处理的是空内容或者{}本身,自然不会产生替换效果。

解决方案

方案1:用bash子shell延迟执行sed

通过bash -c启动子shell,让sed在拿到实际路径参数后再执行:

echo "./src/main/java/com/abc" | xargs -I {} bash -c 'new=$(sed "s/abc/def/" <<< "$1"); echo "mv $1 $new"' _ {}

方案2:用bash内置字符串替换(更高效)

直接利用bash的内置字符串替换功能,无需调用外部sed命令:

echo "./src/main/java/com/abc" | xargs -I {} bash -c 'new=${1/abc/def}; echo "mv $1 $new"' _ {}

验证结果

执行上述任意命令,都会输出你预期的结果:

mv ./src/main/java/com/abc ./src/main/java/com/def

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:35:16