ファイルへの参照を使用して以前の日付を取得するには、dateコマンドをどのように使用しますか?

ファイルへの参照を使用して以前の日付を取得するには、dateコマンドをどのように使用しますか?

参照ファイルの前の日付を取得しようとしています。

私が試したこと:

[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ユーザーのデフォルト形式で日付を出力します。しかし、-dGNUの入力は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

おすすめ記事