Linux新手求助:如何批量将截图重命名为1.png、2.png等格式
解决批量重命名截图文件的问题
你的脚本问题在于把两个循环逻辑混在了一起,还错误保留了原脚本中针对.js文件的后缀替换代码,导致无法正常执行。下面是几种可行的解决方法:
方法一:Bash 循环脚本(最通用)
这是最基础且无需额外安装工具的方法,适合所有Linux系统:
# 初始化计数器从1开始 counter=1 # 遍历当前目录下所有截图格式的PNG文件 for f in Screenshot_*.png; do # 重命名文件,-- 避免文件名以-开头时出错,-n 防止覆盖已存在文件 mv -n -- "$f" "${counter}.png" # 计数器自增1 counter=$((counter + 1)) done
- 用
Screenshot_*.png代替*.png,可以避免误改目录里其他无关的PNG文件 - 加上
-n参数能防止意外覆盖已存在的文件(比如目录里已经有1.png时会跳过),如果确定没有重名文件可以去掉-n - 你的截图文件名是时间戳格式,默认的字典序遍历和时间顺序一致,重命名后的顺序就是截图的先后顺序
如果需要严格按文件修改时间排序(比如文件名不按时间排序时),可以用ls -tr来遍历:
counter=1 # ls -tr 按修改时间从旧到新排序文件 for f in $(ls -tr Screenshot_*.png); do mv -n -- "$f" "${counter}.png" counter=$((counter + 1)) done
方法二:用 rename 命令(更简洁)
如果你的系统安装了Perl版本的rename(Debian/Ubuntu默认自带,CentOS/RHEL需要先安装prename包),可以用一行命令完成:
# -n 是测试模式,先预览修改结果,确认无误后去掉-n执行 rename -n 's/^Screenshot_\d+_\d+\.png/$N.png/' Screenshot_*.png
^Screenshot_\d+_\d+\.png精准匹配你的截图文件名格式,\d+表示任意长度的数字$N是rename自带的自动递增变量,默认从1开始
注意事项
- 执行重命名操作前,建议先备份文件,避免误操作导致文件丢失
内容的提问来源于stack exchange,提问作者confusedcoder101
相关产品推荐
相关产品推荐

