我刚刚在我的主目录中创建了一个文本文件 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