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

批量修改文件名中的数字:移除、添加及替换方法求助

批量修改文件名中的数字:移除、添加及替换方法求助

嘿,我来帮你搞定这个批量改文件名的问题!你提到的几个需求——移除数字、添加固定数字、递增替换数字,用shell脚本就能轻松解决,下面分情况给你一步步说明:

一、移除文件名中的数字(比如Apple1.sh → Apple.sh)

你之前找到的sed命令只是输出结果,没有实际重命名,只需要把echo的结果传给mv命令就能完成改名啦。

如果要移除文件名里所有数字(不管位置),用这个脚本:

for i in *.sh; do
  # 用sed删除所有数字字符
  new_name=$(echo "$i" | sed 's/[0-9]//g')
  # 执行重命名
  mv "$i" "$new_name"
done

如果你的数字只在文件名末尾(比如都是Apple1.sh、Banana2.sh这种格式),可以用更精准的匹配,避免误删开头的数字:

for i in *.sh; do
  # 只删除.sh前面的数字
  new_name=$(echo "$i" | sed 's/[0-9]\.sh$/.sh/')
  mv "$i" "$new_name"
done

小贴士:测试的时候可以先把mv "$i" "$new_name"改成echo "将 $i 改为 $new_name",确认输出的新文件名没问题后,再换成实际的mv命令哦!

二、给文件名添加固定数字(比如Apple.sh → Apple3.sh)

要给所有.sh文件名的末尾(后缀前)加上固定数字,比如3,用这个脚本:

for i in *.sh; do
  # 捕获.sh前面的部分,拼接数字3后再加.sh
  new_name=$(echo "$i" | sed 's/\(.*\)\.sh/\13.sh/')
  mv "$i" "$new_name"
done

这个命令会把Apple.sh变成Apple3.sh,Banana.sh变成Banana3.sh,完全符合你的需求~

三、批量替换数字(比如Apple3.sh → Apple4.sh,数字加1)

这种需要对数字做算术运算,sed搞不定,我们可以用grep提取数字,再用shell的算术功能处理:

for i in *.sh; do
  # 提取文件名的字母前缀(比如Apple、Banana)
  prefix=$(echo "$i" | grep -o '^[a-zA-Z]*')
  # 提取文件名中的数字部分(比如3、4)
  num=$(echo "$i" | grep -o '[0-9]*')
  # 提取后缀(.sh)
  suffix=$(echo "$i" | grep -o '\.sh$')
  # 数字加1
  new_num=$((num + 1))
  # 拼接成新文件名
  new_name="${prefix}${new_num}${suffix}"
  # 执行重命名
  mv "$i" "$new_name"
done

这个脚本会把Apple3.sh改成Apple4.sh,Banana3.sh改成Banana4.sh,完美实现数字递增替换。

备注:内容来源于stack exchange,提问作者God of Money

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:42:39