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

复制brain.mgz到父目录加前缀时丢失文件名后缀,如何修复?

问题分析与修正

你的脚本问题出在两个核心点:

  1. cp 命令里用到的 ${dirname_file} 是未定义的变量,展开后是空字符串,导致目标文件名变成了 ${dirname}_,自然丢失了原文件的名称和后缀。
  2. 你没有提取原文件的完整名称(也就是 brain.mgz),没法把它拼到前缀后面实现需求的命名格式。

修正后的脚本

find . -type f -name 'brain.mgz' -exec sh -c '
  for file; do
    # 获取当前文件所在的mri目录路径(例:./fs/sub-001/mri)
    mri_dir=${file%/*}
    # 获取目标父目录(例:./fs/sub-001)
    parentdir=${mri_dir%/*}
    # 提取父目录的名称(例:sub-001)
    dirname=${parentdir##*/}
    # 提取原文件的完整名称(例:brain.mgz)
    filename=${file##*/}
    # 复制文件到目标路径,拼接前缀与原文件名
    cp "$file" "$parentdir/${dirname}_${filename}"
  done
' sh {} +

关键改动说明

  • 新增 filename=${file##*/} 提取原文件名,确保原文件的名称和后缀被完整保留。
  • 将 cp 命令里的错误变量替换为 ${dirname}_${filename},直接生成 sub-001_brain.mgz 这种符合需求的命名格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:47:21