참조 파일의 이전 날짜를 가져오려고 합니다.
내가 시도한 것:
[rahul@testsrv]$ date +%F -r /tmp/ftpbkp.log
2013-08-27
[rahul@testsrv]$ date +%F -r /tmp/ftpbkp.log -d "1 day ago"
date: the options to specify dates for printing are mutually exclusive
Try `date --help' for more information.
답변1
경고 지침:
$ date -r ~/a
Sun 28 Oct 23:12:00 GMT 2012
$ LC_ALL=C date -r ~/a
Sun Oct 28 23:12:00 GMT 2012
출력으로 date
사용자의 기본 형식으로 날짜를 출력합니다. 그러나 -d
GNU의 입력은 date
형식 지정에 대해 더 까다롭습니다.
$ date -d "$(date -r ~/a) - 1 day"
date: invalid date ‘Sun 28 Oct 23:12:00 GMT 2012 - 1 day’
로케일을 C로 수정하면 문제가 해결됩니다.
$ export LC_ALL=C
$ date -d "$(date -r ~/a) - 1 day"
Sun Oct 28 00:12:00 BST 2012
하지만 일광 절약 시간제임에도 불구하고 날짜는 여전히 2012년 10월 28일입니다. 그 이유는 영국에서는 해당 날짜까지 24시간이 남았지만 여전히 같은 날이기 때문입니다.
이제 전날을 원하면 다음과 같이 작성해야 합니다.
date -d "$(date -r /tmp/file.ref +'%F -1 day')" +%F
답변2
LC_ALL=C date -d "$(LC_ALL=C date -r /tmp/ftpbkp.log) - 1 day" +%F
만약에GNU 날짜없는:
perl -MPOSIX -le'
print strftime("%Y-%m-%d", localtime +(stat shift)[9] - 24*60*60)
' /tmp/ftpbkp.log
답변3
date -r /tmp/ftpbkp.log +%s | awk '{print strftime("%F", $1 - (24*60*60) );}'
답변4
이 -d
옵션은 현재 시간과 다른 시간을 지정하는 데 사용됩니다. 형식에 따라 파일의 마지막 수정 시간 형식을 지정 하라는 명령을 요청했으며 date
옵션에 지정된 다른 시간도 전달했습니다. 이러한 옵션은 상호 배타적입니다. 하지만 이를 결합하는 방법에는 다음과 같은 요령이 있습니다./tmp/ftpbkp.log
%F
-d
date -d "`date -r /tmp/ftpbkp.log`" - 1 day"