将包含科学数字的文件名转换为带有十进制数字的文件

Convert filename including a scientific number to a file with a decimal number

我有几百个文件,比如

xyz_1.000e+00.png 或 xyz_2.300e-01.png 或 xyz_2.400e+02.png.

我想转换文件名,使它们在末尾有相应的十进制数

xyz_0001.000.png 或 xyz_0000.230.png 或 xyz_0240.000.png

我发现了一些关于 printf 或重命名的想法,但无法将它们组合在一起,所以它可以工作。最后,我想使用 convert from imagemagick 创建一个 mpg 的 gif,以正确的顺序显示图片。

谢谢!

遍历文件。使用参数扩展提取数字,使用printf更改其格式。

#! /bin/bash
for f in xyz_*.png ; do
    n=${f%.png}  # Remove the extension.
    n=${n#*_}    # Remove the prefix.
    n=$(printf %08.3f "$n")

    prefix=${f%_*}_
    
    new="$prefix$n.png"
    if [[ -e $new ]] ; then
        echo "$new" already exsists, cannot rename "$f". >&2
    fi
    mv "$f" "$new"
done