ディレクトリのファイルを変更すると、そのディレクトリの時間は変わりませんか?

ディレクトリのファイルを変更すると、そのディレクトリの時間は変わりませんか?

最近作成したファイルを探したいのですが、ファイルに関する内容がまったく覚えておらず、可能な深さの間接ディレクトリにあると推測するだけです。

  1. ディレクトリ内のすべてのサブディレクトリの時間を確認しましたが、すべてファイルを作成した時間より古い時間があります。ディレクトリ内のファイルが更新されたときにディレクトリの時間が更新されない理由を知りたいです。
  2. あなたの場合、ファイルをどのように検索しますか?findいくつかの時間オプションを使用して?ありがとうございます。

答え1

私は使用します

find <PARENT_DIR> -type f -mtime 1

1最後に変更された日数(「X日未満」または「X日を超える」を意味する前に、またはを付けることができ-ます+):したがって、過去3日間にファイルを変更するには、-mtime -3

答え2

他のファイルと同様に、ディレクトリの変更時間(方法を参照してください。目次~と呼ばれる目次(リスト名前/数字電話帳と同じマッピング)の代わりにフォルダ)いつでもコンテンツ修正されました。

つまり、ファイルが追加(リンク)、削除(リンク解除)、または名前が変更された場合です。

ファイルは複数のディレクトリに接続できます。システムは、どのファイルがリンクされているかについてのリアルタイムのリストを保持しません(書き込み用に指定されたオープンファイル記述子のディレクトリは追跡しません)。ファイルを開くには(コンポーネントはいつでも名前を変更できます)、その場合は、ファイルが関連付けられているすべてのディレクトリとすべての親エントリの変更時間を更新します。/これは最終的に行われます。

多くの場合、唯一のオプションは、ファイルシステム内のすべてのファイルの変更時間を見つけることです。

あなたはできます使い方はfindコレンティンに記載されているのと同じです。、またはこれらのすべてのディレクトリを読みたくない場合は、inodeテーブル内のすべてのinodeの変更時間を確認できます(これを行うことができるツールはわかりません)。

一部のファイルシステムは、btrfs最近変更されたファイルの手がかりを提供する場合があります。

$ sudo btrfs sub find-new / -1
transid marker was 2273028
$ sudo btrfs sub find-new / 2273020
inode 60319801 file offset 212992 len 4096 disk start 8350875648 offset 0 gen 2273024 flags NONE root/screenlog.2
inode 60319801 file offset 217088 len 28672 disk start 8403632128 offset 0 gen 2273023 flags NONE root/screenlog.2
inode 61045822 file offset 360448 len 4096 disk start 1111568384 offset 0 gen 2273022 flags NONE var/log/apache2/access.log
inode 61045835 file offset 2326528 len 8192 disk start 7824994304 offset 0 gen 2273024 flags NONE var/log/syslog
inode 61045840 file offset 57344 len 8192 disk start 1517305856 offset 0 gen 2273023 flags NONE var/log/kern.log
[...] 

関連情報