1

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

4

2 回答 2

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

显示您应该看到的内容。

于 2013-10-17T05:21:31.540 回答
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";

}
于 2013-10-17T09:56:05.117 回答