変更日を変更せずにファイルを編集する方法を教えてください。


回答:


2

私が考えることができる唯一の方法はそれを変更する前にそれの修正日を保存してからそれをまた元に戻すことです。

私はあなたがそうすることを可能にするどんなCLIツールも知らない、しかし何年も前に私はファイルの修正日を任意の値に設定するためにCで何かを書いた。私はこれがあなたが探している答えではないことを知っています、しかし私はこれを次のようにするでしょう:

  1. ファイルを変更する前に、ファイルの元のアクセス時間と変更時間を取得します。これのために、あなたはただ使うことができます stat() システムコール(発行することによってそれについてもっと読みなさい man 2 stat
  2. を使用してファイルを変更します。 vi またはあなたが好きな他のエディタ
  3. 変更時刻を元の状態に戻します。これを使用して行うことができます utimes() call(やはり、あなたは man 2 utimes コマンド)。ご注意ください、 utimes() アクセス時間と修正時間の両方を設定します。

編集する

実際には、それを実行できるCLIツールが既にあるようです。この答えによると: Lionでファイルの作成日(st_birthtime)を変更するにはどうすればいいですか? 、あなたは使うことができます touch それらの時間を変更するコマンド: touch -m 修正時間を変更する touch -a アクセス時間を変更します(1回の呼び出しで両方のオプションを使用できます)。あなたがする必要があるのは、 stat 変更する前にファイルにコマンドラインを入力して、アクセス時間と変更時間を表示します。それから編集をして、その後で、 touch アクセス/変更時間を編集前の値に戻すため。


これはすべて複雑です。しかし、私はこれらのコマンドのいくつかを使い終えるかもしれません。マイクありがとう。
Nicolas Barbulesco

1

touch -tを使用して変更時間とアクセス時間を変更し、touch -mを使用して変更時間を変更するか、またはtouch -aを使用してアクセス時間を変更できます。目標時間が元の作成時間より前であれば、それらすべても作成時間を変更します。

$ ls -lT test.txt
-rw-r--r--  1 lauri  staff  3 Nov  3 15:13:42 2013 test.txt
$ date -jf %s $(stat -f%m test.txt) +%Y%m%d%H%M.%S
201311031513.42
$ vi test.txt
$ ls -lT test.txt
-rw-r--r--  1 lauri  staff  3 Nov  3 15:18:18 2013 test.txt
$ touch -t 201311031513.42 test.txt
$ ls -lT test.txt
-rw-r--r--  1 lauri  staff  3 Nov  3 15:13:42 2013 test.txt

stat -f%mは、修正時刻としてフォーマット文字列を指定します。 date -jfでは、-jは時刻の設定を無効にし、-fは形式を指定します。

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