ファイルのmtimeをエポック形式で設定するにはどうすればよいですか?


11

エポック形式でファイルのmtime を取得する方法を知っています。

stat --format=%Y <file>

しかし、エポック形式でファイルのmtime を設定する方法を理解できませんでした。touch(1)のマニュアルページは、「タイムスタンプ」値​​(月、日、時間、分などを使用する多かれ少なかれ固定形式)または「ほとんど自由な形式の人間が読める日付文字列」のみを受け入れるようです。

調査する必要がある別のユーティリティはありますか?

ありがとう。


1
してください、常にあなたのOSが含まれます。多くの場合、解決策は使用しているオペレーティングシステムによって異なります。Unix、Linux、BSD、OSXなどを使用していますか?どのバージョン?
terdon

回答:



1

perl

$ perl -e 'utime (stat($_))[8], time(), $_ for @ARGV' file1 file2 ...

これにより、のすべてのファイルのmtimeが変更され@ARGVます。(stat($_))[8]ファイルの時間です。

utime ファイルのリストを受け取ることができます。変更を気にしない場合は、次のことを試してください。

 $ perl -e '$t = time(); utime $t, $t, @ARGV' file1 file2 ...

注意

utimeCランタイムライブラリとファイルシステムが使用しているに依存します。でより多くの参照perldoc -f utimeperldoc perlport


0

touchGNU coreutils(つまり、非組み込みLinuxおよびCygwin)からのコマンドを使用して、完全なマニュアル(通常はinfo形式でローカルに入手可能)で日付入力形式のドキュメントを確認してください。エポック日付はプレフィックスで示されます@

touch -d @1234567890 foo

これはBusyBoxでも機能します(少なくとも一部のシステムでは、コンパイルオプションに依存する場合があります)。

* BSDでは、これをtouch単独で行うことはできないと思いますが、呼び出しdateて、エポック時間をtouch受け入れ可能な形式にフォーマットできます。

touch -d "$(date -r 1234567890 +%Y%m%d%H%M.%S)" foo

POSIXはエポック日付を操作する方法がないことで有名です。perl使用できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.