私は私のホームディレクトリにテキストファイルyyyを作成しました。それで修正してtouch yyy
手動で編集しました。
次に、次のようにしてこのファイル(およびその他のファイル)を見つけたいと思います。
find ~/ -type f -mtime 1 -ctime 1 | grep yyy
ただし、yyyは表示されません。 Findの男は次のように書きました。
-ctime n: ファイルの状態が n*24 時間前に最後に変更されました。 ...
-mtime n:ファイルデータがn * 24時間前に最後に変更されました。 ...
だから私の最初の質問例:
yyyが見つからないのはなぜですか?
私のもの2番目の質問例:
変更されたファイルの状態は、ファイルの内容とファイルの権限が変更されたことを意味しますか?
ファイルのデータを変更することは、ファイルの内容を変更することを意味しますか?
答え1
はい、「ファイルデータの変更」(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