我需要在创建文件时打开目录并对其进行排序。我可以找到一些讨论,使用 Perl、排序和文件的标签,根据修改日期对文件进行排序。我认为这是比按创建日期排序更常见的需求。我使用 Perl。以前有一些关于 Perl 以外的其他语言(例如 php 或 java)按创建日期排序的帖子。
例如,我需要执行以下操作:
opendir(DIR, $ARGV[0]);
my @files = "sort-by-date-created" (readdir(DIR));
closedir(DIR);
do things with @files...
CPAN 有一个关于排序命令的页面,但对我来说不是很容易访问,而且我在页面上找不到“日期”或“创建”字样。
作为对编辑的回应,我应该说我使用的是 Mac,OS 10.7。我知道在 Finder 中,有一个按创建日期排序的选项,因此必须有某种指示以某种方式附加到该系统中的文件的创建日期。
作为对答案的回应,这里是尝试对文件进行排序的脚本的另一个版本:
#!/usr/bin/perl
use strict; use warnings;
use File::stat; # helps with sorting files by ctime, the inode date that hopefully can serve as creation date
my $usage = "usage: enter name of directory to be scanned for SNP containing lines\n";
die $usage unless @ARGV == 1;
opendir(DIR, $ARGV[0]); #open directory for getting file list
#my @files = (readdir(DIR));
my @file_list = grep ! /^\./, readdir DIR;
closedir(DIR);
print scalar @file_list."\n";
for my $file (sort {
my $a_stat = stat($a);
my $b_stat = stat($b);
$a_stat->mtime <=> $b_stat->mtime;
} @file_list ) {
say "$file";
}