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

如何仅重命名不匹配指定模式的文件,避免重复追加-renamed后缀?

解决方案

核心是在循环中增加判断,跳过已包含-renamed标识的文件,同时优化脚本兼容性,避免特殊文件名导致报错。

适配原写法的修改版(和原有逻辑对齐,易理解)

# 处理jpg格式文件
for f in *.jpg; do
  # 文件名已带-renamed后缀则直接跳过
  [[ $f == *-renamed.jpg ]] && continue
  mv -- "$f" "${f%.jpg}-renamed.jpg"
done

# 处理mp4格式文件
for f in *.mp4; do
  [[ $f == *-renamed.mp4 ]] && continue
  mv -- "$f" "${f%.mp4}-renamed.mp4"
done

简洁合并版(一次处理两种格式)

# 开启shell扩展通配符支持
shopt -s extglob
# 遍历所有主体不带-renamed的jpg、mp4文件
for f in !(*-renamed).@(jpg|mp4); do
  # 无匹配文件时跳过无效循环
  [ -f "$f" ] || continue
  # 拆分文件名和后缀
  file_suffix=${f##*.}
  file_name=${f%.*}
  mv -- "$f" "${file_name}-renamed.${file_suffix}"
done

两个版本重复执行都不会出现重复追加后缀的问题,也兼容带空格、特殊字符、以-开头的文件名场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 20:09:00