use strict; use Fatal qw(chdir opendir mkdir rename); chdir "..."; opendir my $dh, "."; my @files = grep !/\A\.\.?\z/, readdir $dh; my $index = 0; while (@files) { my $dir = sprintf "images%02d", $index++; mkdir $dir; rename $_, $dir for splice @files, 0, 1000; }