find 的 mtime 和 ctime 选项

find 的 mtime 和 ctime 选项

我刚刚在我的主目录中创建了一个文本文件 yyy。我用它修改了它touch yyy并手动编辑它。

然后我想通过以下方式找到这个文件(和其他文件):

find ~/ -type f -mtime 1 -ctime 1 | grep yyy

但 yyy 不显示。 find的man中写道:

-ctime n:文件状态最后一次更改是在 n*24 小时前。 ...

-mtime n:文件的数据最后一次修改是在n*24小时前。 ...

所以我的第一个问题是:

为什么没有找到 yyy

我的第二个问题是:

更改的文件状态是否意味着:更改了文件的内容和文件的权限&...?

修改文件的数据是否意味着:更改了文件的内容?

答案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

相关内容