有谁知道如果我应用 -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:/ :