2014-10-12 4 views
1

perl로 유닉스에서 파일 생성 시간을 얻는 방법? 당신은 거의가Perl을 사용하여 Unix에서 파일 생성 시간을 얻는 방법

perl -MPOSIX -le 'print strftime "%d %b %Y %H:%M ".$_, localtime((lstat)[9]) for @ARGV' file.txt 
+2

http://stackoverflow.com/questions/397495/how-can-i-compare-file-creation-time-to-the-current-time-in-perl – chilemagic

+1

@chilemagic 다음 명령을 사용하여 정확한 명령을 게시 할 수 있습니다. 대답은 창조 시간을 얻으려고? – Yuvi

답변

-1

:

나는 파일의 최종 수정 시간을 표시이 명령을 가지고있다.

당신은 strftime 대신 파일 이름의 localtime에서 반환 값을 전달해야

perl -MPOSIX -e 'printf "%s %s\n", $_, strftime("%d %b %Y %H:%M", localtime((lstat)[9])) for @ARGV' file.txt 

출력을 :

file.txt 10 Oct 2014 15:38 

그리고 그것은 더 많은 코드를 취하더라도, 나는쪽으로 기울어 것 Time::PieceFile::stat을 사용하면 코드를보다 현대적이며 읽기 쉽도록 만들 수 있습니다.

perl -MTime::Piece -MFile::stat -e ' 
    printf "%s %s\n", $_, localtime(stat($_)->mtime)->strftime("%d %b %Y %H:%M") for @ARGV 
    ' file.txt 
+0

아직 시간을 벌지 못했습니다 :-( – Yuvi

+0

['stat'] (http://perldoc.perl.org/functions/stat.html)에 대한 문서를보십시오. 아마도 ' ctime'은'mtime' 대신에'ctime'을 사용합니까? 그냥 (반드시) 모든 파일 시스템 유형에서 모든 필드가 지원되는 것은 아닙니다. 특히 ctime 필드는 이식성이 없습니다. 특히, 자세한 내용은 perlport의 파일 및 파일 시스템을 참조하십시오 ._ – Miller

+3

stat에 대한 문서를 살펴보면 ctime은 "파일 생성 시간"을 의미하지 않습니다 . – geocar

0

일반적으로 파일 생성 시간은입니다. 새로운 xstat() 인터페이스는이 인터페이스에 대한 지원을 약속하지만 펄에서는 사용하지 않습니다. XS 기반 인터페이스를 작성하여 액세스 할 수 있습니다.

UNIX의 Perl에서 ctime은 파일 생성과 관련이없는 Inode 변경 시간을 나타냅니다. perlport에 따르면

, ctime는 Windows에서 생성 시간이 될 것입니다,하지만 당신은 당신의 프로그램이 대신 생성에 시간을 달려 있다는 것이 더 명시 적으로이기 때문에 Win32API::File::Time::GetFileTime()을 사용할 수 있습니다 (포터에게 명백 할 것이다) 어떤 ctime에 포함되어 있습니다.

+1

http://unix.stackexchange.com/a/50184/77238 – chilemagic

+0

나는 고쳐졌다. 내 대답을 업데이트 할게. – geocar