web-dev-qa-db-ja.com

検索のmtimeおよびctimeオプション

ホームディレクトリにテキストファイル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番目の質問は:

変更されたファイルのステータスは、次のことを意味します:ファイルの内容の変更とファイルのアクセス許可&...?

変更されたファイルのデータは、次のことを意味しますか?ファイルの内容が変更されましたか?

4
FloHe

はい、「変更されたファイルのデータ」(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
5
xhienne