当我有一个包含大约 5000 张图像的文件夹并使用以下代码时:
my $path= "./foo/images"
my @files = File::Find::Rule->file()->name('*.jpg')->in($path);
我应该在我的数组中获得 5000 张图像。
但是是否有 perl 或 shell 函数(如tail
andhead
或任何其他方式)的等价物来获取最后 100 张图像?
您可以使用数组 slice。这将返回第一个 5:
my @files = (File::Find::Rule->file()->name('*.jpg')->in($path))[0 .. 4];
这得到最后 5 个:
my @files = (reverse File::Find::Rule->file()->name('*.txt')->in($path))[0 .. 4];
刚刚意识到...... File::Find::Rule 完全混合了图像......所以我们需要在切片数组之前另外进行排序
所以最后我/我们必须使用以下内容:
对于前 5 个:
my @files = (sort File::Find::Rule->file()->name('*.jpg')->in($path))[0 .. 4];
最后5个:
my @files = (reverse sort File::Find::Rule->file()->name('*.jpg')->in($path))[0 .. 4];