ディレクトリとサブディレクトリのファイル内容のリストを、各ファイルの作成、追加、変更、および最後に開いた時刻とともに作成するにはどうすればよいですか?

ディレクトリとサブディレクトリのファイル内容のリストを、各ファイルの作成、追加、変更、および最後に開いた時刻とともに作成するにはどうすればよいですか?

私は Mac を使っており、特定のディレクトリとそのサブディレクトリ内のすべてのファイルの内容のリストを、各ファイルの「作成日」、「追加日」、「変更日」、および「最終オープン日」とともに作成する必要があります。

さまざまなスレッドを調べてみると、「ls」または「stat」コマンドを使用して作成/追加/変更データを取得する方法はわかりますが、すべてのファイルの最終オープン日付情報を再帰的に取得する方法はわかりません。

答え1

  • 創造: これは UNIX に含まれるオリジナルのファイル プロパティの 1 つではありませんが、今日の多くのファイル システム (MacOS に最も関連する HFS+ を含む) で使用でき、 や などのツールの最新バージョンではlsstatこれにアクセスする方法がわかっています。ではls -U、 (man ページに記載されています)statが使用されますB
  • 追加した: これは、それ自体は存在しません。ファイルを含むディレクトリの最終変更時刻を使用すると、そのディレクトリへの最終変更がいつ発生したかを知ることができます。最終変更とは、ファイルが追加 (作成または移動) されたか、削除 (削除または移動) されたか、または名前が変更されたかのいずれかです。ただし、どれが行われたかはわかりません。取得できるのは最新のイベントに関する情報のみです。
  • 修正済みそして最終アクセス: これらは、UNIX のファイルで昔から利用できるオリジナルの統計です。ほとんどのファイルシステムと基本的にすべてのツールがこれをサポートしています: ls -u、は、およびをstat使用します(これもドキュメントに記載されているとおりです)。ファイル アクセスのたびにディスク書き込みを節約するために、最終アクセス タイムスタンプの追跡がオフになっているか、条件付きでオフになっている場合があることに注意してください。am

もう一つあなたが言及しなかったのは最後のinode変更これは、ファイルの内容ではなく、ファイルのメタデータが最後に変更された日時を追跡します。

答え2

あなたはstatファイルに関する情報を一覧表示するコマンド。このコマンドは、オペレーティング システムがファイルに記録する 4 つのタイムスタンプをすべて一覧表示できます。

  • %a: アクセス時刻 (atime)。これは、ファイルが最後に開かれたか、または読み取られた時刻 (たとえば、その内容を分析またはインデックス付けするため) です。
  • %m: 変更時刻 (mtime)。これはファイルの内容が最後に変更された時刻です。ファイルが他の場所からコピーまたはダウンロードされた場合、コピー時に mtime が更新されるかどうかは、コピーの作成方法によって異なります。
  • %c: inode の変更時刻 (ctime)。この時刻は、ファイルの読み取り以外の変更、名前の変更、移動、権限の変更など、ファイルに対して何かが起こるたびに更新されます。
  • %B: 誕生時刻 (作成時刻)。これは通常、ファイルが作成またはダウンロードされた時刻ですが、一部のアプリケーションでは、ファイルが最後に保存された時刻を反映する場合があります。

組み合わせてfindコマンドはファイルを再帰的に一覧表示します。たとえば、現在のディレクトリの下にあるすべての通常ファイルのタイムスタンプと名前を一覧表示するには、次のコマンドを使用します。

find . -type f -exec stat -f '%Sa %Sc %Sm %SB %N' {} \;

関連情報