我要制作图像文件的视频,但文件名包含科学计数法的数字,因此名称的顺序将不正确。
文件名采用以下格式:
ABC_1.000000E-01.png ~ ABC_1.100000E+01.png,
DEF_1.000000E-01.png ~ DEF_1.100000E+01.png,
GHI_1.000000E-01.png ~ GHI_1.100000E+01.png,
.
.
.
如果我更改用于数字的数字符号,则顺序再次不正确,因此我想将其更改如下。
ABC_001.png ~ ABC_110.png,
DEF_001.png ~ DEF_110.png,
GHI_001.png ~ GHI_110.png,
.
.
.
如何在我的 Linux 系统上执行此操作?
这是一个脚本,它将找到当前目录中的每个 png 文件并相应地重命名它们。请注意,它不会覆盖现有文件。
这是作品的预览
剧本前
脚本之后
脚本
与
zsh
:-n
(如果满意,请移除试运行)。与
perl
基于 - 的变体rename
(有时称为prename
或perl-rename
从(不相关且更有限的)rename
命令中消除歧义)类似util-linux
:两者的平行:
\d+
匹配一个或多个十进制数字,而 zsh<->
匹配表示任何十进制数字的字符串(形式<x-y>
无界限),因此本质上是相同的。sprintf "%03d"
转换为整数并用 0填充。$(( number|0 ))
在 zsh 中转换为整数,而l[3][0]
填充。差异:
zmv
在进行任何重命名之前,将进行完整性检查(例如x_1E+2.png
vs的冲突或已经存在的目标文件)。x_10E+1.png
l
参数扩展标志会进行填充,但也会截断到指定的宽度。因此,1.2E+3
(1200) 将被截断为200
,而sprintf "%03d"
将其保留为1200
。也试试
它用于
awk
隔离和转换科学计数法中的数字,并将其十倍值输出为填充零的整数。sh
例如,如果对结果感到满意,请通过管道。