【发布时间】:2014-01-04 02:36:39
【问题描述】:
我需要做的是编写一个脚本来读取目录列表 然后对它们进行排序,最后一个目录将被“弹出”。
我的 $last_one = pop @sorted;
然后最后一个目录将被删除 - 使用 system("rm- rf $last_one) 或 删除树($last_one)。
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4
5 my $dir_to_process = "/production/log/fo/archive/";
6 opendir DH, $dir_to_process or die "Sorry, this is not going to work out $!";
7
8 while (my $name = readdir DH) {
9 next if $name =~ /^\./;
10 push(my @unsorted,$name) ;
11 my @sorted_dir = sort @unsorted;
12 foreach my $sorted (@sorted_dir) {
13 print "$sorted\n";
14 sleep 1 ;
15 }
16
17 }
但是,我在对目录进行排序时遇到了很多麻烦 - 它们是用这种格式编写的。 这是实际的输出。
2013Nov12
2013Sep14
2013Jul15
2013Jan20
2013Sep11
2013May31
2013Jul04
2012Dec09
2013Oct12
2013Oct09
2012Dec27
2013Nov28
2013Mar24
2013Jun06
2013Jun25
【问题讨论】:
-
您在标题中说“按 ASCII 排序”,但我认为您真正想要的是按日期排序(即从最早到最新,反之亦然)?
-
如果你只想找到最旧的,那么排序是没有意义的。
-
问题是它是按 ascii 排序的,而不是按日期排序 - 是的,我需要的是最旧的日期目录。