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

如何批量复制多目录指定文件并重命名?排除含_old的目录

正确复制并重命名list.txt文件的命令(排除含_old的目录)

你的原cp命令失效的原因是:在源和目标路径同时使用大括号扩展时,会生成所有可能的源-目标组合,这并不是你需要的一对一复制逻辑。要实现每个文件复制到自身路径并添加_backup后缀,需要逐个处理每个文件。

方法1:Bash循环结合通配符

利用你已经验证有效的通配符匹配,通过循环逐个处理文件:

for file in /data/*/{subfolder,anothername}/{user,other}/list.txt; do
    [ -f "$file" ] && cp "$file" "${file}_backup"
done
  • [ -f "$file" ]:检查文件是否存在,避免通配符无匹配时的错误
  • ${file}_backup:自动在原文件名后追加_backup后缀,保持文件在原目录下

方法2:使用find命令(更灵活)

如果需要更精确的路径过滤,可结合find命令直接定位目标文件并执行复制:

find /data -type f -name "list.txt" \( -path "*/subfolder/user/*" -o -path "*/anothername/other/*" \) ! -path "*_old*" -exec cp {} {}_backup \;
  • -type f:仅匹配文件(排除目录)
  • -name "list.txt":精准定位目标文件名
  • \( -path ... -o -path ... \):匹配指定的子路径结构
  • ! -path "*_old*":排除所有包含_old的路径
  • -exec cp {} {}_backup \;:对每个找到的文件执行复制操作,{}代表当前文件路径

内容的提问来源于stack exchange,提问作者ng-User

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:57:17