在ext4文件系统上运行时,'ls'命令的时间复杂度是多少?

问题描述 投票:0回答:1

我在Redhat Linux服务器上的一个目录中有几十万个文件。

我需要执行ls -t以获取上次编辑的文件的名称,并将文件名上传到数据库。最近,我开始遇到问题,因为目录中的文件数量不断增长,并且想知道'ls'命令在ext4文件系统上执行时的时间复杂度。

另外,还有什么更好的方法呢?

linux redhat ls ext4
1个回答
1
投票

当您在Linux操作系统上运行时,只需使用inotify tools。使用内核inotify接口,可以使用一些非常简单的命令行工具来监视文件系统上的每个更改。

示例:

> inotifywait -m -e create -e modify test/ --format '%:e %f'

上面的命令无休止地等待(-m-> monitor)等待事件(-e)在目录test/中创建和修改文件,并输出格式化字符串,其中%e被事件替换为%f替换为创建或修改的文件名。

如果您现在在单独的外壳中运行,请执行以下检查:

> touch test/newfile1
> touch test/newfile2
> echo hallo > test/newfile2

命令的输出是:

Setting up watches.
Watches established. 
CREATE newfile2
MODIFY newfile2

非常容易地将文件名立即写入数据库,而无需再次读取整个目录。

© www.soinside.com 2019 - 2024. All rights reserved.