リンクがターゲットファイルと同じタイムスタンプを持つようにする方法

リンクがターゲットファイルと同じタイムスタンプを持つようにする方法

file指定されたファイルがあるとしますmtime。シンボリックリンク自体symを指すシンボリックリンクを作成すると、 -stampとは異なる生成時間に対応する-stampが得られます。fileln -smtimesymlinkmtimefile

mtimeそれでは、指すファイルと同じシンボリックリンクを作成する方法はありますか?

この質問の背景はこれクラウドイメージの最新のn個のファイルのリンクディレクトリを生成するスクリプト。ls -ltこのディレクトリでこれを行うと、current実際のファイルの作成日を表示するのではなく、シンボリックリンクの作成日が表示されます。さて、ファイル作成日を見たいです。

編集する 元の投稿で誤ってctimeを要求しましたが(上記で変更しました)、質問はmtimeに関するものでなければなりません。この点を指摘してくれた@ilkkachuに感謝します。

ベストアンサー1

ctimeやmtimeを言うのですか? Ctimeは、ファイルメタデータ(inodeの内容)が最後に変更された時刻です。または文書の内容。書き込み時に更新されますが、権限が変更されても更新されます。 mtimeはファイルデータが最後に書き込まれた時間であり、変更できますが、touchctimeは通常変更できません。

レプリカをリセットできるため、通常はmtimeが便利です。また表示されますls -lt(ctimeを表示するには追加する必要があります-c)。

touch -h以下を使用してシンボリックリンクのランタイムを変更できます。

$ ls -lt
total 4
lrwxrwxrwx 1 ilkkachu ilkkachu 9 Sep  4 15:10 link.txt -> hello.txt
-rw-r--r-- 1 ilkkachu ilkkachu 6 Dec 31  1999 hello.txt

$ touch -h -r hello.txt  link.txt 
$ ls -lt
total 4
-rw-r--r-- 1 ilkkachu ilkkachu 6 Dec 31  1999 hello.txt
lrwxrwxrwx 1 ilkkachu ilkkachu 9 Dec 31  1999 link.txt -> hello.txt

ただし、これはまだ手動で実行する必要があり、ターゲットファイルが変更されても自動的に更新されません。ただし、ls -Lリンク自体ではなくターゲットファイルの詳細を印刷することができます。

$ touch hello.txt 
$ ls -L -lt
total 8
-rw-r--r-- 1 ilkkachu ilkkachu 6 Sep  4 15:12 hello.txt
-rw-r--r-- 1 ilkkachu ilkkachu 6 Sep  4 15:12 link.txt

もちろんリンクという事実も隠す。

リンク名と宛先、指定されたファイルの日付と所有権を表示する混合出力が必要な場合は、Perlなどのツールを使用してリストを作成できます。

おすすめ記事