ファイルが変更されると、ディレクトリのmtimeとctimeが変更されるのはなぜですか?

ファイルが変更されると、ディレクトリのmtimeとctimeが変更されるのはなぜですか?

ファイルとディレクトリのatime、ctime、mtimeについて学んでいます。私が見ると、ディレクトリ内のファイルを変更しても、「ディレクトリファイル」自体のinodeやファイルの内容は変わらないので、ctimeとmtimeは同じままにする必要があります。

ただし、以下のテストでは、ファイルを編集すると変更時間と変更時間が変わる現象が発生します。彼らはなぜ変わったか。

$ ls    

blah.txt  test.txt  test.txt~

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:33 2015
    Modify: Tue Aug 11 08:01:49 2015
    Change: Tue Aug 11 08:01:49 2015

$ cd Write

$ ls
    blah.txt  test.txt  test.txt~

$ emacs test.txt

$ cd ..

$ stat -x Write
      File: "Write"
      Size: 170          FileType: Directory
      Mode: (0777/drwxrwxrwx)         Uid: (  501/user)  Gid: (   20/   staff)
    Device: 1,4   Inode: 652017    Links: 5
    Access: Tue Aug 11 08:20:48 2015
    Modify: Tue Aug 11 08:20:48 2015
    Change: Tue Aug 11 08:20:48 2015

ベストアンサー1

実行すると、emacsそのケースにバックアップファイルが作成されますtest.txt~。その名前のファイルがすでに存在する場合は、そのファイルを削除して新しいファイルを作成すると疑われます。新しいファイルを作成するとディレクトリが変更されるため、変更および変更時間が更新されます。

echo new line >> blah.txt代わりに追加のファイルを作成しないので、ディレクトリはこれらのエントリを更新しないと言うことができます。この場合、シェルはファイル(追加用)のみを開きます。

おすすめ記事