0

約 5000 個の画像を含むフォルダーがあり、次のコードを使用する場合:

my $path= "./foo/images"
my @files = File::Find::Rule->file()->name('*.jpg')->in($path);

配列に 5000 個の画像を取得する必要があります。

tailしかし、たとえば最後の 100 枚の画像を取得するために、perl やandのようなシェル関数head、またはその他の方法に相当するものはありますか?

4

2 に答える 2

1

配列スライスを使用できます。これにより、最初の 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];
于 2014-02-07T13:27:19.967 に答える
0

今気づきました... 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];
于 2014-02-07T13:52:00.273 に答える