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 の下のサブフォルダーだけを印刷しました。print($dir) が機能するため、 $SOME_DIR パスが存在すると確信しています。ディレクトリの最終変更時刻を取得できない理由を知っている人はいますか? ありがとう!

4

2 に答える 2

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 に答える
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 に答える