将自定义日期附加到增加1秒的文件名中



因此,我生成了数千张图像,需要使用以下格式重命名:

19-2022 17-35-10(HH:MM:SS格式(

下一个应该是:

19-10-2022 17-35-11(增加1秒(,依此类推

此外,我的图像是完美编号的(如1.png、2.png、3.png等(

有没有什么方法可以用bash脚本之类的东西来存档?我也想具体说明开始日期。

编辑:我已经在网上搜索了这个问题,找不到任何有用的信息。我所找到的只是如何附加常规日期,而不是像我在这里问的那样增加一秒的自定义日期。

编辑2:我需要它是一个不同的开始日期";现在";。

将开始日期转换为自epoch以来的秒数,然后从文件名中添加数字(或执行任何其他算法(:

#!/bin/bash
START=$(date +"%s" -d "2022-10-20 13:00")
for F in *.png; do
N="${F%.png}"
DATE=$(date +"%d-%m-%Y %H-%M-%S" -d@$((${START}+${N})))
mv -v "${F}" "${DATE}.png"
done

UPD:这将适用于完全命名的文件,但在非数字名称上会失败。此外,如果您有类似7.png07.png007.png的文件,它会将多个文件重命名为相同的名称。如果要处理任何文件名,只需放弃原始名称,每次重命名时将START增加1即可。

如果您想维护原始文件的数字排序顺序:

#!/bin/bash
stamp=1666175710     # "Seconds since epoc, manually entered"
readarray -d '' images < <(printf '%s' *.png | sort -zV)
for i in "${images[@]}"
do
mv "$i" "$(date -d "@${stamp}" "+%Y%m%d%H%M%S").png"
stamp=$(( stamp + 1 ))
done

我还选择了一个与iso-8601密切相关的命名,这将允许对重命名的文件进行自然排序。