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

Linux Bash中同目录批量复制并重命名文件的技术咨询

批量复制并重命名模板文件的简便方案

嘿,这个问题我之前也碰到过,完全不用折腾/tmp目录那么麻烦!给你几个简单直接的解决方案,轻松搞定从foo.c/foo.h到bar.c/bar.h的复制重命名:

方法一:Bash参数替换(最通用,无需额外工具)

这是最稳妥的方式,所有支持Bash的环境都能直接用,几行循环就能搞定:

for file in foo.*; do
    cp "$file" "${file/foo/bar}"
done

原理很简单:${file/foo/bar}是Bash的参数替换语法,会把文件名里的foo替换成bar。比如foo.c会变成bar.c,foo.h会变成bar.h,完美实现一对一的复制重命名。

方法二:用mmv工具(更简洁,需提前安装)

如果你的系统允许安装小工具,mmv是专门处理批量重命名/复制的神器,命令超简洁:

mmv 'foo.*' 'bar.#1'

这里的#1代表通配符*匹配到的部分(也就是.c和.h),直接把前缀foo替换成bar即可。如果没装mmv,可以用包管理器安装:比如Debian/Ubuntu用sudo apt install mmv,macOS用brew install mmv。

为什么你之前的方法不行?

  • cp foo.* bar.*:这个命令的逻辑错误,cp会把所有源文件(foo.c、foo.h)尝试复制到单个目标文件bar.*,但bar.*不是目录,所以会报错或者只保留最后一个文件,根本达不到一对一复制的效果。
  • rename命令:rename是对现有文件重命名,不是复制,它会直接把foo.c改成bar.c(如果bar.c已存在会直接覆盖),完全不符合你“复制模板生成新文件”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:48:46