保存 XML 文件数量的作业

保存 XML 文件数量的作业

我的朋友在一家 IT 公司工作,他需要对目录(包括子目录)内的 XML 文件进行计数。

然而,由于文件数量达到数百万,因此使用或类似的计数ls -LR | grep .xml需要花费大量时间。

我在想什么是更好的方法?

某种后台进程可以处理这个问题,以便每当创建新文件或修改时间更改时,它都会影响计数器(文件数)吗?

答案1

您描述的守护进程可以使用inotify

但也许使用findandwc -l已经足够快了?

我只运行了一项快速测试,但在我的系统上time ls -lR /mm/|grep -c jpg( real 0m2.168s) 和time find /mm -type f -name \*jpg|wc -l( )之间存在显着差异。real 0m0.397s两者都返回大约 42000 个文件,因此较大目录的差异可能会更大。

(我多次运行这两个命令以排除磁盘缓存影响。)

答案2

以下脚本将无限期地监视目录,并在每次目录内容更改时打印“*.xml”文件的数量。

DIR="a_path_to_directory_to_watch"
(echo; inotifywait -m -r -e create -e delete "$DIR" 2> /dev/null) |
    while read; do
        find "$DIR" -name '*.xml' -printf . | wc -c
    done

相关内容