如果应用 -mtime +30,“find”命令是否执行全磁盘扫描?

如果应用 -mtime +30,“find”命令是否执行全磁盘扫描?

有谁知道如果我应用 -mtime +30,find 命令是否会执行全磁盘扫描?

我担心当目录数量增加时,每当我运行 find 时都会陷入死锁,并试图找到一种方法来限制它搜索的目录数量,但不确定即使定义 mtime 仍然会搜索每个目录。

答案1

mtime不决定要搜索文件系统层次结构中的哪个位置,它只是对找到的文件进行测试,以当前时间为参考检查其修改时间(如果大于 30 分钟)。

要控制搜索位置,请查看您正在搜索的路径(递归或非递归)。例如,您可以通过-xdev等将(递归)搜索限制为仅限于某个目录、某个文件系统。

查看man find

答案2

find将扫描目录树(这不一定是完整的磁盘)。

默认情况下,find将检查目录以返回层次结构中的每个文件。

测试(例如-mtime)不要修改返回的文件。除非结合一些行动(如-prune-quit),文件的修改时间不会影响搜索空间。

各种种类选项,测试, 和行动手册页中概述了。

我担心当目录数量增加时,每当我运行 find 时都会陷入死锁,并试图找到一种方法来限制它搜索的目录数量

我不确定为什么“僵局”令人担忧。随着文件的增加,工作量find也随之增加。但它应该总是完成。

除非您了解层次结构中哪些文件可能匹配或不匹配的一些信息,否则find文件系统都无法提供帮助。打印每个可能的匹配的唯一方法是检查每个可能的文件。

现在,如果您有一些信息可以限制哪些操作是可能的,您也许可以添加一些操作来减少已完成的工作。

答案3

您正在寻找的是选项-maxdepth。您可以find使用此选项限制命令扫描的目录数量。例如,以下命令将递归到当前目录下的两个目录

find . -maxdepth 2 -iname '*.txt'

-maxdepth 1如果您只想扫描当前目录,请将其更改为;如果您想递归到更多目录,则增加该值

man页面find

-max深度级别 下降至命令行参数下方目录的最多级别(非负整数)级别。 -maxdepth 0 表示仅将测试和操作应用于命令行参数。

-min深度级别 不要在低于级别(非负整数)的级别应用任何测试或操作。 -mindepth 1 表示处理除命令行参数之外的所有文件。

无论您传递给 的值是什么+mtime,仅当您发出命令并且使用“.”时,find才会扫描整个磁盘。作为第一个选项,或者如果命令的第一个选项是 并且您没有提及或值。find/find/-maxdepth-mindepth

例如:

sree@seiko:/ : pwd
/
sree@seiko:/ : find . -iname "*.txt"
sree@seiko:/ :

相关内容