我正在try 创建一个小的Bash脚本来从PDF文件名中删除日期名称.例如,我要重命名:

newspaper20240204-sunday_01.pdf
newspaper20240204-sunday_02.pdf
newspaper20240204-sunday_03.pdf
newspaper20240204-sunday_04.pdf
newspaper20240204-sunday_05.pdf
newspaper20240205-monday_01.pdf
newspaper20240205-monday_02.pdf
newspaper20240205-monday_03.pdf
newspaper20240205-monday_04.pdf
newspaper20240205-monday_05.pdf

newspaper20240204_01.pdf
newspaper20240204_02.pdf
newspaper20240204_03.pdf
newspaper20240204_04.pdf
newspaper20240204_05.pdf
newspaper20240205_01.pdf
newspaper20240205_02.pdf
newspaper20240205_03.pdf
newspaper20240205_04.pdf
newspaper20240205_05.pdf

I'm new 至 Bash, so be gentle :] Thank you for any help.

推荐答案

如果方案始终为something-dayofweek_num.pdf -> something_num.pdf,您可以try :

for f in *-*_*.pdf; do mv "$f" "${f%-*}_${f##*_}"; done

说明:${f%-*}是众多参数替换中的一个.它扩展为bash变量f的值,go 掉了最后-的最后部分.${f##*_}是另一个扩展为具有最长前缀的bash变量f的值,直到最后的_被删除.

Linux相关问答推荐

在PowerShell for Linux上,打印出的maven命令还有其他字符

我可以在不调用 shell 的情况下使用 popen() 吗?在 C++ 中

如何在 Linux 上打印带有屏蔽值的环境名称?

为什么 liburing 写入性能低于预期?

linux shell获取多文件交集

如何在ubuntu中通过.sh文件启动多个服务

有什么方法可以知道在发送之前将在 TCP 上发送多少字节?

如何使用 Bash 读取文件中的倒数第二行?

如何使用完整路径或文件名显示 grep 结果

Bash 变量:是否区分大小写?

Linux 上的 C++ 开发 - 我从哪里开始?

为什么可执行文件操作系统依赖于?

bash shell 脚本函数定义(如f () {})中使用的括号是什么?它与使用function关键字不同吗?

一个进程如何拦截Linux上另一个进程的stdout和stderr?

Monit 守护程序 - 连接到 monit 守护程序时出错

如何获取/使用 LibUUID?

linux根据文件名模式搜索文件

.NET Core 中的跨平台文件名处理

如何在 IE 中使用 Linux 进行测试

如何将所有文件从一个目录移动(和覆盖)到另一个目录?