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

macOS终端:如何重命名已匹配的多圆点JPG文件(替换点为下划线)

批量重命名多圆点JPG文件的方案

你可以通过以下两种方式,对find匹配到的文件执行重命名操作,将文件名中除.jpg后缀外的所有圆点替换为下划线:

方案1:使用Perl版rename命令(推荐)

Perl版本的rename支持正则批量替换,结合你已有的find命令,执行效率高:

find -E . -regex '(.*\..*){2,}\.jpg' -exec rename 's/\.([^.]+)(?=\.jpg)/_$1/g' {} +

命令说明:

  • s/\.([^.]+)(?=\.jpg)/_$1/g:正则规则会精准匹配.jpg后缀前的所有圆点,将其替换为下划线:
    • (?=\.jpg)是正向预查,确保只处理.jpg之前的内容,不会改动后缀;
    • g表示全局替换,一次性处理文件名中所有符合条件的圆点。

执行前可加-n参数测试(仅打印不执行重命名):

find -E . -regex '(.*\..*){2,}\.jpg' -exec rename -n 's/\.([^.]+)(?=\.jpg)/_$1/g' {} +

方案2:纯Bash循环(全系统兼容)

如果你的系统没有Perl版rename,可以用Bash原生命令实现,兼容性更强:

find -E . -regex '(.*\..*){2,}\.jpg' -print0 | while IFS= read -r -d '' file; do
    dir_path=$(dirname "$file")
    filename_no_ext=$(basename "$file" .jpg)
    new_filename_no_ext=${filename_no_ext//./_}
    mv "$file" "${dir_path}/${new_filename_no_ext}.jpg"
done

命令说明:

  • -print0和read -r -d '':处理包含空格、特殊字符的文件名,避免出现错误;
  • ${filename_no_ext//./_}:Bash参数扩展语法,将文件名(不含后缀)中的所有圆点替换为下划线;
  • 最后拼接.jpg后缀,完成重命名。

执行前可将mv改为echo mv,先验证新文件名是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:42:09