3

我们刚刚安装了一个海量文件管理设备,我们希望在该设备上存储来自供应商的数据。他们每天都通过 FTP 向它发送文件,现在,我们有大约 60,000 多个文件。

find . -name '*TXT' -exec ls '{}' \; | wc -l会工作,虽然很慢。

有没有更快的方法来计算文件?

4

4 回答 4

8

为什么不只是

find . -name '*TXT' | wc -l

? 您当前的命令不必要地ls每个文件生成,并且该进程本身生成将非常慢。对我的系统进行快速测试表明速度提高了 40 倍。

于 2012-08-21T16:21:01.400 回答
2

怎么样

find . -name '*TXT' | wc -l
于 2012-08-21T16:20:34.200 回答
2

使用 GNU find,这可能会稍微快一些:

find . -name '*.TXT' -printf x | wc -c

或使用 POSIX

find . -name '*.TXT' -exec printf x%.s {} + | wc -c
于 2012-08-21T16:45:13.930 回答
2

用 bash:

shopt -s globstar nullglob

然后,要么

files=(**/*.TXT)
nfiles=${#files[@]}

或者

nfiles=$( printf "%s\n" **/*.TXT | wc -l )
于 2012-08-21T19:54:46.883 回答