我想通过perl获取文件夹上次修改日期和时间。我的代码是:
my @dirs = grep { -d } glob "$SOME_DIR/*";
foreach my $dir (@dirs)
{
print($dir);
print((stat $dir)[9]); #line got problem with
}
但它只打印了$ SOME_DIR下的子代码。我确定$ SOME_DIR路径存在,因为print($ dir)有效。有谁知道什么不能得到目录的最后修改时间?谢谢!
答案 0 :(得分:1)
对我来说,$SOME_DIR = ".";
,我得到了输出:
./c-vs-c++1369283477./computist-1.dSYM1381934424./computist-2.dSYM1381934897./ll3.dSYM1381816690./syncio.dSYM1381984813./xs.dSYM1381986208
这个温和的修订代码:
#!/usr/bin/env perl
use strict;
use warnings;
my $SOME_DIR = ".";
my @dirs = grep { -d } glob "$SOME_DIR/*";
foreach my $dir (@dirs)
{
printf "%-20s - %d\n", $dir, (stat $dir)[9];
}
给出了输出:
./c-vs-c++ - 1369283477
./computist-1.dSYM - 1381934424
./computist-2.dSYM - 1381934897
./ll3.dSYM - 1381816690
./syncio.dSYM - 1381984813
./xs.dSYM - 1381986208
您需要证明$SOME_DIR
中的内容。例如,您可以使用:
system "ls -l $SOME_DIR";
显示你应该看到的内容。
答案 1 :(得分:1)
试试这个: -
#!/usr/bin/perl
@1=`ls -ltr abcdpathtodir | grep ^d | awk '{\$1=\$2=\$3=\$4=\$5=""; print \$0}'`;
foreach $i (@1)
{
print " ---$i\n";
}
或其他方式: -
@m=`ls -ltr dir | grep ^d | awk '{print \$6,\$7,\$8,\$9}'`;
foreach $i (@m)
{
print "$i\n";
}