Sort By Part Of Filename
Jan 12
2008
2008
Comments Off
Assume that we have directory, containing files like:
part_1.txt
part_2.txt
part_100.txt
part_200.txt
In case that we are interested in /(\d+)\.\w+$/ as part of the sorting criteria:
Perl
# short but unefficient @a = sort {($a =~ /(\d+)\.\w+$/)[0] < => ($b =~ /(\d+)\.\w+$/)[0]} < *>;
Ruby
regex = Regexp.new(/(\d+)\.\w+$/) # enum.sort {| a, b | block } => array Dir["*"].grep(regex).sort do |a, b| a.match(regex)[0].to_i < => b.match(regex)[0].to_i end # enum.sort_by {| obj | block } => array Dir["*"].grep(regex).sort_by do |name| name.match(regex)[1].to_i end