Solaris의 날짜와 동일 --참조

Solaris의 날짜와 동일 --참조

이 명령의 GNU 구현에는 date참조 파일의 마지막 수정 날짜를 표시하는 멋진 기능이 있습니다. 그런 다음 해당 +FORMAT매개변수를 사용하여 어떤 형식으로든 날짜를 쉽게 가져올 수 있습니다. 예를 들면 다음과 같습니다.

date -r /etc/motd +%Y%m%d_%H%M%S
# output in the format: 20121001_171233

Solaris에도 동등한 방법이 있습니까? 해결 방법으로 stat다음과 같은 기능을 사용했습니다 .perl

perl -mPOSIX -e 'print POSIX::strftime("%Y%m%d_%H%M%S\n", localtime((stat("/etc/motd"))[9]))'

또 다른 옵션은 다음 출력을 구문 분석하는 것입니다 ls -Ego.

ls -Ego /etc/motd | awk '{print $4 "_" $5}' | tr -d :- | sed -e 's/\..*//'

그러나 구문 분석된 출력은 ls나쁜 습관으로 알려져 있습니다.

더 좋고, 더 간단하고, 더 우아한 솔루션이 있습니까?

답변1

현재 날짜 이외의 date날짜를 인쇄할 수 없다는 점은 종종 불행한 결함입니다. 일부 유니스에서는 다른 날짜를 인쇄할 수 있지만 불행하게도 솔라리스에서는 그렇지 않습니다.

숫자 출력만 필요한 경우 출력을 구문 분석할 수 있습니다 ls -Ego. 이러한 옵션은 -go사용자 및 그룹 이름을 억제하며 -ESolaris에만 적용됩니다 .ls이를 통해 구문 분석 가능한 형식으로 시간을 표시할 수 있습니다.

ls -Ego /path/to/file |
awk 'NR==1 {$0 = $4 "_" $5; gsub(/[-:]/,""); sub(/\..*/, ""); print}'

(이것은 작동 /usr/bin/ls하지만 POSIX 호환 awk가 필요하므로 /usr/xpg4/bin또는 앞에 또는 전화가 있는지 확인하십시오.)/usr/xpg6/bin/usr/binPATHnawk

답변2

저는 Perl이 최선의 방법이라고 생각합니다. 저는 Solaris에서 유용한 날짜 변환기를 알지 못하며 date명령은 현재 시간만 인쇄하거나 설정합니다.

답변3

글쎄요, 정확히 원하는 형식은 아니지만 어떻습니까?

stat -c %y /etc/motd
=>
  2011-03-08 11:39:20.000000000 +0000

그런 다음 원하는 것을 사용하여 해당 타임스탬프를 형성하세요.

편집하다
나는 OpenSolaris나 Solaris 11이 GNU 버전과 함께 번들로 제공된다고 가정합니다 stat.

관련 정보