BASH发现ctime没有按预期工作

时间:2012-09-06 16:20:33

标签: bash

我无法“找到”查找旧文件。我将我的发现链接到一个声明中,所有其他部分都正常工作。这是我所拥有的精简版。它搜索$ path的目录树并创建单独的临时文件,其中仅包含找到的每个项目的新行字符:所有文件,更改大于365天的文件以及所有目录。文件和目录工作正常(以及我未在此处包含的其他6个链接搜索),但ctime返回0次点击,我知道我正在使用的目录中有匹配的文件。

find $path \
\( -type f -fprintf /tmp/files.txt "\n" \) , \
\( -type f -ctime +365 -fprintf /tmp/oldfiles.txt "\n" \) , \
\( -type d -fprintf /tmp/dirs.txt "\n" \)

这似乎与find的手册页一致。它表示-ctime n查找更改时间为n天的文件。 +给出> n天, - 给出< n天,没有符号给出n天。尽管看起来一切都在排队,但我的临时文件仍然是0行。有什么想法吗?另外值得注意的是,为了节省处理时间,我需要在一次遍历文件系统时找到这些文件。

2 个答案:

答案 0 :(得分:3)

“更改时间”表示“元数据更改时间”,即权限或所有权发生更改时。请考虑使用mtime。

答案 1 :(得分:1)

-ctime n               文件的状态最后一次更改n * 24小时前。查看评论               为了理解四舍五入如何影响解释               文件状态更改时间。

-mtime n               文件的数据最后修改时间为n * 24小时前。查看评论               为了理解四舍五入如何影响解释               文件修改时间。

状态=权限,用户,组,可能的ACL等

内容=您的文件数据

如果您的文件的所有权在1。5年前发生了变化并且没有显示,那就是一个问题,但如果您尝试检测其内容的更改,请尝试-mtime。

旁注:-atime在某些系统中使用起来很棘手,因为它也构成了访问。 Sidenote2:这是一个 find 问题,并不是bash特有的。

相关问题