将包含科学数字的文件名转换为带有十进制数字的文件
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
我有几百个文件,比如
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