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

如何通过终端批量将文件夹内SVG文件名首字母大写改为小写

批量将CapitalCase命名的svg文件转为camelCase格式

你之前执行的命令没达到预期,核心原因是${f:1}的作用是截取文件名从第二个字符开始的内容,相当于直接把首字符删掉了,根本不是转小写,自然不对。
下面给几个不同环境下可用的方案,直接在存放svg的目标文件夹里执行就行:

  • 方案1:Bash 4.0及以上版本(绝大多数Linux发行版默认环境,最简洁)
for f in *.svg; do
  newname="${f,}"
  mv -v -- "$f" "$newname"
done

语法说明:${f,}是Bash内置的参数扩展功能,专门用来把字符串的第一个字符转成小写,剩下的字符保持原样,刚好匹配你要的首字母小写、其余不变的需求。命令里加--是为了兼容特殊开头的文件名,避免mv把文件名误判成命令参数。

  • 方案2:兼容低版本Bash(比如macOS自带的3.2版本Bash)/ 通用POSIX环境
    如果你的环境Bash版本比较老,不支持上面的,语法,可以用tr命令配合字符串截取实现首字母转小写:
for f in *.svg; do
  first_char=$(printf '%s' "${f:0:1}" | tr '[:upper:]' '[:lower:]')
  rest_part="${f:1}"
  mv -v -- "$f" "${first_char}${rest_part}"
done
  • 方案3:perl版rename命令(适合批量处理大数量文件,效率高)
    如果你的系统装了perl版本的rename工具(部分Linux发行版默认预装,注意和util-linux版的rename区分),可以直接用正则一条命令搞定:
rename 's/^./\l$&/' *.svg

语法说明:正则匹配文件名的第一个字符,通过\l标记把匹配到的首字符转成小写,处理几千个文件速度很快。

执行前的安全提示

正式执行重命名前,建议先把命令里的mv -v替换成echo mv -v先跑一遍,这时候终端只会打印所有将要执行的重命名操作,不会真的改文件名,你确认所有转换后的文件名都符合预期,再把echo去掉执行真实操作,避免改错文件。
你提到文件夹里的文件都是字母或数字开头,数字开头的文件执行上述命令时不会有改动(数字没有大小写),完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:27:24