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

如何批量将符号链接的目标文件重命名为符号链接自身名称?

批量将符号链接目标文件重命名为链接名称的解决方案

针对你这种MythTV数据库损坏、只能靠符号链接对应原文件的场景,我整理了一套bash脚本方案,可以高效完成你需要的批量重命名操作,完全匹配你的需求。

核心思路

遍历符号链接目录下的每个链接,获取它指向的目标文件绝对路径,然后将目标文件重命名为对应符号链接的名称,同时保留原文件所在的目录位置。

基础版脚本(直接执行)

先切换到你的符号链接所在目录,然后运行以下脚本:

# 切换到符号链接目录,替换成你的实际路径
cd /path/to/your/symlink-folder

# 遍历目录下所有mpg格式的符号链接(如果有其他格式,把*.mpg换成*)
for symlink in *.mpg; do
  # 先确认当前项是符号链接
  if [ -L "$symlink" ]; then
    # 获取目标文件的绝对路径(避免相对路径问题)
    target_file=$(readlink -f "$symlink")
    # 提取目标文件所在的目录
    target_dir=$(dirname "$target_file")
    # 执行重命名:把目标文件改成符号链接的名字
    mv "$target_file" "$target_dir/$symlink"
    # 可选:如果重命名后不需要符号链接了,可以取消下面的注释删除它
    # rm "$symlink"
  fi
done

安全测试版(先验证再执行)

为了避免误操作(比如重名文件覆盖),建议先运行测试版本,查看所有要执行的重命名命令,确认无误后再执行真实操作:

cd /path/to/your/symlink-folder

for symlink in *.mpg; do
  if [ -L "$symlink" ]; then
    target_file=$(readlink -f "$symlink")
    target_dir=$(dirname "$target_file")
    new_file_path="$target_dir/$symlink"
    
    # 检查目标目录是否已经存在同名文件
    if [ -f "$new_file_path" ]; then
      echo "⚠️  警告:$new_file_path 已存在,跳过符号链接 $symlink"
    else
      echo "✅  准备重命名:$target_file → $new_file_path"
      # 确认无误后,删除下面一行的#,执行真实重命名
      # mv "$target_file" "$new_file_path"
    fi
  fi
done

关键注意事项

  • 备份优先:执行前一定要备份目标文件或者符号链接目录,避免意外出错导致文件丢失
  • 权限检查:确保你对目标文件有读写权限,对符号链接目录有读取权限
  • 格式适配:如果你的符号链接不是.mpg后缀,把脚本里的*.mpg换成*即可遍历所有链接
  • 重复文件处理:测试版会自动跳过已存在的同名文件,如果你需要覆盖,可以去掉对应的判断逻辑

内容的提问来源于stack exchange,提问作者2705114-john

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:34:05