ホームディレクトリにテキストファイルyyyを作成しました。 touch yyy
で変更し、手動で編集しました。
次に、このファイル(およびその他)を次の方法で検索します。
find ~/ -type f -mtime 1 -ctime 1 | grep yyy
yyyは表示されません。 find's manには、次のように書かれています。
-ctime n:ファイルのステータスが最後に変更されたのはn * 24時間前です。 ...
-mtime n:ファイルのデータが最後に変更されたのはn * 24時間前です。 ...
だから私の最初の質問は:
Yyyが見つからない理由
私の2番目の質問は:
変更されたファイルのステータスは、次のことを意味します:ファイルの内容の変更とファイルのアクセス許可&...?
変更されたファイルのデータは、次のことを意味しますか?ファイルの内容が変更されましたか?
はい、「変更されたファイルのデータ」(mtime
)は、コンテンツが変更されたことを意味します。この日付は手動で変更できます(例:touch
)。
はい、「ファイルのステータスが変更されました」(ctime
)は、コンテンツが変更されたか、ファイルのメタデータ(権限、所有者など)が変更されたことを意味します。これは手動で変更することはできません。
例:
$ date > foo
$ ls -l --full-time foo; ls -lc --full-time foo # Both times have changed
-rw-r--r-- 1 xhienne xhienne 29 2017-01-18 13:40:07.677161702 +0100 foo
-rw-r--r-- 1 xhienne xhienne 29 2017-01-18 13:40:07.677161702 +0100 foo
$ chmod o-r foo
$ ls -l --full-time foo; ls -lc --full-time foo # Only ctime has changed
-rw-r----- 1 xhienne xhienne 29 2017-01-18 13:40:07.677161702 +0100 foo
-rw-r----- 1 xhienne xhienne 29 2017-01-18 13:40:29.601161310 +0100 foo
$ date >> foo
$ ls -l --full-time foo; ls -lc --full-time foo # Again, both times have changed
-rw-r----- 1 xhienne xhienne 58 2017-01-18 13:40:51.297160921 +0100 foo
-rw-r----- 1 xhienne xhienne 58 2017-01-18 13:40:51.297160921 +0100 foo
find
述語-mtime 1
および-ctime 1
が昨日(正確には24時間前から48時間前)に変更されたファイルを検索したため、ファイルが見つかりません。今日変更されたファイルの場合は、-mtime 0
または-mtime -1
(-ctime
と同じ)を使用します。
例:
$ find -name foo -mtime 1 -ctime 1
$ find -name foo -mtime 0 -ctime 0
./foo
$ find -name foo -mtime -1 -ctime -1
./foo