ฉันจะทำมันอย่างถาวร - ฟีดในรายการของการประทับเวลา:
#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
while ( my $ts = <DATA> ) {
chomp ( $ts );
my $t = Time::Piece->new();
print $t->epoch, " ", $t,"\n";
}
__DATA__
1442039711
1442134211
1442212521
ผลลัพธ์นี้:
1442039711 Sat Sep 12 07:35:11 2015
1442134211 Sun Sep 13 09:50:11 2015
1442212521 Mon Sep 14 07:35:21 2015
หากคุณต้องการรูปแบบผลลัพธ์เฉพาะคุณสามารถใช้strftime
เช่น:
print $t->epoch, " ", $t->strftime("%Y-%m-%d %H:%M:%S"),"\n";
ซึ่งจะเปลี่ยนเป็นซับในท่อของคุณ:
perl -MTime::Piece -nle '$t=Time::Piece->new($_); print $t->epoch, " ", $t, "\n";'
แต่ฉันอาจแนะนำแทนที่จะมองใช้File::Find
โมดูลและทำสิ่งทั้งหมดใน Perl แทน หากคุณยกตัวอย่างโครงสร้างไดเรกทอรีของคุณก่อนที่จะตัดมันฉันจะยกตัวอย่างให้คุณ แต่มันจะเป็นสิ่งที่ชอบ:
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
use File::Find;
sub print_timestamp_if_dir {
#skip if 'current' item is not a directory.
next unless -d;
#extract timestamp (replicating your cut command - I think?)
my ( $timestamp ) = m/.{3}(\d{9})/; #like cut -c 3-12;
#parse date
my $t = Time::Piece->new($timestamp);
#print file full path, epoch time and formatted time;
print $File::Find::name, " ", $t->epoch, " ", $t->strftime("%Y-%m-%d %H:%M:%S"),"\n";
}
find ( \&print_timestamp_if_dir, "." );
Fri Oct 2 05:35:28 47592
)