计算目录(包括子目录)中文件数的最快方法

Ada*_*ace 8 linux performance

我正在运行一个脚本来查看目录及其子目录中的所有文件.

该脚本已经运行了一天,我想估计它将继续运行多长时间.我知道它到目前为止处理了多少文件(73,000,000),但我不知道文件的总数.

计算文件的最快方法是什么?

我试着右键单击目录并选择"属性",然后它慢慢计数.我尝试将ls重定向到一个文件中,它只是搅拌和搅拌......

我应该用c写一个程序吗?

Joh*_*ica 6

最简单的方法:

find <dir> -type f | wc -l
Run Code Online (Sandbox Code Playgroud)

或许快一点:

find <dir> -type f -printf '\n' | wc -l
Run Code Online (Sandbox Code Playgroud)


Ada*_*ace 6

我做了一个快速的研究.使用包含100,000个文件的目录,我比较了以下命令:

ls -R <dir>
ls -lR <dir>
find <dir> -type f
Run Code Online (Sandbox Code Playgroud)

我跑了两次,一次重定向到一个文件(>file),一次管道到wc(|wc -l).以下是以秒为单位的运行时间:

        >file   |wc
ls -R     14     14
find      89     56
ls -lR    91     82
Run Code Online (Sandbox Code Playgroud)

>file和之间的差异|wc -l小于ls和之间的差异find.

它似乎ls -R至少快4倍find.