我有包含 DPX 图像的文件夹,我希望能够检查文件命名是否按顺序进行。
文件名的范围包括:
帧 0000000.dpx 到帧 9999999.dpx
文件夹不太可能包含此完整范围,并且可能以上述序列中包含的任何数字开始和结束。开始的数字总是小于结束的数字。
任何帮助将不胜感激 :-)
我有包含 DPX 图像的文件夹,我希望能够检查文件命名是否按顺序进行。
文件名的范围包括:
帧 0000000.dpx 到帧 9999999.dpx
文件夹不太可能包含此完整范围,并且可能以上述序列中包含的任何数字开始和结束。开始的数字总是小于结束的数字。
任何帮助将不胜感激 :-)
蛮力法。
显示示例目录内容:
这是脚本:
产生这个输出:
将其另存为,例如,
find-missing.pl
并使其可执行chmod +x find-missing.pl
。首先,我需要为测试运行随机创建一堆匹配文件(十个或更少的文件就足够了):
在 bash 中,
$RANDOM
给出一个介于 0 和 32767 之间的随机数...因此for
循环有大约 50% 的机会创建任何文件。在此运行中,您可以看到除了 00000002.dpx、00000004.dpx 和 00000009.dpx 之外的所有文件都已创建。然后运行 perl 脚本:
注意:它没有提及,
00000009.dpx
因为它超出了找到的最高编号文件。如果你想让它这样做,那么要么硬编码$last
为一个合适的值,要么从命令行参数中获取它。第二个版本,用于以
Frame
. 还允许通过脚本顶部的变量进行配置 - 顺便说一句,没有理由不能从命令行获取这些(在 array 中,或使用Getopt::Std或Getopt::Long@ARGV
之类的模块):顺便说一句,
($first = $files[0]) =~ s/^$prefix|$suffix$//g;
是一个常见的 perl 惯用语,用于为变量赋值并使用替换s///
操作修改它。它相当于:# find and print any missing filenames
要打印文件总数(以及丢失文件的数量),请将上述任一版本中的最后一段代码(所有内容)更改为:这将产生如下输出: