如何用Bash脚本移除PDF文件名中的星期名称?
Bash脚本移除PDF文件名中的星期名称
原始文件名示例:
newspaper20240204-sunday_01.pdf newspaper20240204-sunday_02.pdf newspaper20240205-monday_01.pdf newspaper20240205-monday_02.pdf
目标文件名示例:
newspaper20240204_01.pdf newspaper20240204_02.pdf newspaper20240205_01.pdf newspaper20240205_02.pdf
方法一:通用Bash循环脚本
纯Bash实现,兼容性强,无需额外工具:
#!/bin/bash # 遍历当前目录下符合命名模式的PDF文件 for file in newspaper*-*.pdf; do # 避免匹配不到文件时执行无效命令 [ -f "$file" ] || continue # 通过参数扩展移除"-星期_"部分,替换为"_" new_name="${file/-*_/_}" # -v参数会显示重命名过程,方便确认 mv -v "$file" "$new_name" done
脚本说明
${file/-*_/_}是Bash参数扩展语法:匹配文件名中第一个-开头到_的内容,直接替换为_,精准去掉-sunday、-monday这类星期标识。- 测试阶段可以把
mv -v改成echo mv -v,先预览重命名结果,确认无误后再执行实际重命名。
方法二:用rename命令(Linux发行版适用)
Debian/Ubuntu等系统自带Perl版本的rename,一行命令就能批量处理:
rename 's/-[a-z]+_/_/' newspaper*-*.pdf
命令说明
- 正则表达式
-[a-z]+_匹配-开头的小写字母序列(星期名称)加_,替换为单个_,批量完成重命名操作。
注意事项
如果是macOS系统,自带的是BSD版本rename,语法不同,可针对每个星期单独处理:
rename -s "-sunday_" "_" newspaper*-sunday_*.pdf rename -s "-monday_" "_" newspaper*-monday_*.pdf
内容的提问来源于stack exchange,提问作者PUSTAKAKORAN.COM
相关产品推荐
相关产品推荐

