1. ホーム
  2. linux

[解決済み] linuxターミナルで、フォルダの内容を考慮した最終更新日を表示するには?

2023-06-15 16:18:27

質問

さて、ここからが本題です。私が "web" という名前のディレクトリを持っているとしましょう、そこで

$ ls -la

drwx------  4 rimmer rimmer 4096 2010-11-18 06:02 web

BUTはこのディレクトリ、web/php/の中にあります。

$ ls -la

-rw-r--r-- 1 rimmer rimmer 1957 2011-01-05 08:44 index.php

つまり、私のディレクトリ /web/php/index.php のコンテンツが 2011-01-05 に最終更新されているにもかかわらず、/web/ ディレクトリ自体は 2010-11-18 に最終更新されたと報告されているのです。

私が行う必要があるのは、私の /web/ ディレクトリの最終更新日が、このディレクトリ内の任意のファイル/ディレクトリの最新更新日として、再帰的に報告されるようにすることです。

これを行うにはどうしたらよいでしょうか。

どのように解決するのですか?

のようなものです。

find /path/ -type f -exec stat \{} --printf="%y\n" \; | 
     sort -n -r | 
     head -n 1

説明

  • find コマンドはディレクトリを無視して再帰的にすべてのファイルの更新時刻を表示します (IQAndreas のコメントによると、フォルダのタイムスタンプは当てにならないそうです)。
  • sort -n (数値順) -r (逆順)
  • head -n 1: 最初のエントリを取得