无法获取文件夹上次修改时间

时间:2013-10-17 05:04:50

标签: perl

我想通过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)有效。有谁知道什么不能得到目录的最后修改时间?谢谢!

2 个答案:

答案 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";

}