Bash 脚本我需要在 Bash 中重命名文件,因此文件名的第一部分被移动到文件名的最后一部分

Bash 脚本我需要在 Bash 中重命名文件,因此文件名的第一部分被移动到文件名的最后一部分

这里以其中一个文件名为例。

2017-11-09-23.00.19-CookingDoughnuts.txt

重命名为

CookingDoughnuts-2017-11-09-23.00.19.txt

我需要对 1000 个文件进行批量操作,所以这是一个脚本,我遇到的问题是实际的重命名位。但如果它使发布解决方案更容易,可以提供完整的脚本。

我可以说每个文件的日期格式都相同,因此第四个破折号符号始终是文件名第一部分和第二部分的分隔符。但实际日期和时间会有所不同,文件名的文本部分也会有所不同。

不需要在新文件名中重写完整的日期和时间戳,因此在此示例中,以下内容就可以了。

CookingDoughnuts-2017-11-09-00.00.00.txt

小时、分钟、秒可以全部为00,但日期必须完整。

答案1

参数替换

fname="2017-11-09-23.00.19-CookingDoughnuts.txt"
ext="${fname##*.}"
name="${fname%.*}"
pref="${name#*-*-*-*-}"
suff="${name%-$pref}"
newfname="$pref-$suff.$ext"
echo "$newfname"

相关内容