$dir = getcwd(); find(\&book, $dir ."/Book Chapter"); my @bookFiles; sub book{ next if (-l && !-e ); push (@bookFiles, $File::Find::name) if (( $_ =~ m/\.txt$/) || ($_ =~ m/\.jpg$/) || ($_=~ m/\.tif$/)); } my @bookNameArray; my $bookName; my @bookFileName; for(my $h = 0; $h < scalar(@bookFiles); $h++){ @bookNameArray = split(/_/ , $bookFiles[$h]); @bookFileName = split("/" , $bookFiles[$h]); $bookName = $bookNameArray[-2]; mkdir( $dir . "/Book Chapter/" . $bookName); move($bookFiles[$h], $dir . "/Book Chapter/" . $bookName . "/" . $bookFileName[-1]); }