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

如何编写Shell脚本去除JPG文件名第一个下划线前的内容

批量重命名JPG文件:移除第一个下划线前的内容

这里提供几种简单可靠的Shell脚本实现方式,适配你给出的文件名格式:

方法1:纯Bash参数扩展(无需额外工具)

直接利用Bash内置的字符串处理功能,安全且无额外依赖:

for file in *.jpg; do
  # 跳过不存在的文件(避免匹配不到时处理"*.jpg"本身)
  [ -f "$file" ] || continue
  # 截取第一个下划线之后的所有内容作为新文件名
  new_name="${file#*_}"
  # -n 参数防止意外覆盖已有文件,确认没问题后可移除
  mv -n "$file" "$new_name"
done

${file#*_}是Bash核心语法:#表示从字符串开头删除最短匹配的*_模式(即第一个下划线及之前的所有字符)。

方法2:用sed构造重命名命令(适合预览验证)

如果想先确认生成的重命名命令是否正确,可以用sed生成命令后再执行:

# 先预览命令,确认无误后再追加 | bash 执行
ls *.jpg | sed 's/\(.*_\)\(.*\)/mv -n "\0" "\2"/'

执行时直接运行:

ls *.jpg | sed 's/\(.*_\)\(.*\)/mv -n "\0" "\2"/' | bash

sed的正则将文件名拆分为「第一个下划线前的内容」和「剩余部分」,替换为对应的mv命令,确保每个文件都被正确重命名。

方法3:Perl版rename工具(简洁高效)

多数Linux发行版自带Perl实现的rename工具,一行命令即可完成:

# 先预览重命名效果,确认后移除-n参数
rename -n 's/^.*_//' *.jpg

正则表达式^.*_匹配文件名开头到第一个下划线的所有内容,替换为空字符串,直接完成批量重命名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:15:02