2

我无法“查找”来定位旧文件。我将我的发现链接到一个语句中,并且所有其他部分都运行良好。这是我所拥有的精简版。它搜索 $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 行。有什么想法吗?另外值得注意的是,为了节省处理时间,我需要在一次遍历文件系统时找到这些文件。

4

2 回答 2

3

“更改时间”是指“元数据更改时间”,即权限或所有权发生更改的时间。考虑改用 mtime。

于 2012-09-06T17:54:52.177 回答
1

-ctime n 文件状态最后一次更改是 n*24 小时前。请参阅 -atime 的注释以了解舍入如何影响文件状态更改时间的解释。

-mtime n 文件的数据最后一次修改是在 n*24 小时前。请参阅 -atime 的注释以了解舍入如何影响文件修改时间的解释。

状态 = 权限、用户、组,可能还有 ACL 等。

内容 = 您的文件数据

如果您的文件在 1.5 年前更改了其所有权并且没有显示,那是个问题,但如果您要检测的是其内容的更改,请尝试 -mtime。

旁注: -atime 在某些系统中使用起来可能很棘手,因为它也构成了访问。旁注 2:这是一个查找问题,并且完全不特定于 bash。

于 2012-09-06T18:01:29.207 回答