
私はやり方を知っている得るエポック形式のファイルの mtime:
stat --format=%Y <file>
しかし、私はどうすればいいのか分からなかったセットエポック形式のファイルの mtime。touch(1) のマニュアル ページでは、「タイムスタンプ」値 (月、日、時間、分などを使用する、ほぼ固定形式) または「ほぼ自由形式の人間が読める日付文字列」のみを受け入れるようです。
他に検討すべきユーティリティはありますか?
ありがとう。
答え1
少なくとも GNU の世界では:
touch --date=@1403970787 file
のようにdate
。
答え2
touch
GNU coreutilsのコマンド(つまり、非組み込みLinuxとCygwin)で、完全なマニュアル(通常は情報形式でローカルに入手可能)のドキュメントについては、日付入力形式。紀元年接頭辞で示されます@
:
touch -d @1234567890 foo
これは BusyBox でも動作します (少なくとも一部のシステムでは、コンパイル オプションに依存する可能性があります)。
*BSD では、単独でこれを行うことはできないと思いますtouch
が、date
エポック時間を受け入れられる形式にフォーマットするために呼び出すことができますtouch
。
touch -d "$(date -r 1234567890 +%Y%m%d%H%M.%S)" foo
POSIXではエポック日付を操作する方法が不足していることで有名です。Perlを使用する。
答え3
とperl
:
$ perl -e 'utime (stat($_))[8], time(), $_ for @ARGV' file1 file2 ...
これにより、 内のすべてのファイルの mtime が変更されます@ARGV
。は(stat($_))[8]
ファイルの atime です。
utime
ファイルのリストを受け取ることができます。atime の変更を気にしない場合は、次を試すことができます。
$ perl -e '$t = time(); utime $t, $t, @ARGV' file1 file2 ...
注記
utime
使用している C ランタイム ライブラリとファイル システムに依存します。詳細については、perldoc -f utime
およびを参照してくださいperldoc perlport
。