我们刚刚安装了一个大型文件管理器设备,我们想要存储来自供应商的数据。他们每天都将FTP文件发送到它,我们现在有大约60,000多个文件。
做find . -name '*TXT' -exec ls '{}' \; | wc -l
虽然效果很慢。
有更快的方法来计算文件吗?
答案 0 :(得分:8)
为什么不
find . -name '*TXT' | wc -l
?您当前的命令不必为每个文件生成ls
,并且该过程本身产生的速度非常慢。对我的系统进行快速测试表明速度提高了40倍。
答案 1 :(得分:2)
怎么样
find . -name '*TXT' | wc -l
答案 2 :(得分:2)
使用GNU查找,这可能会稍快一些:
find . -name '*.TXT' -printf x | wc -c
或使用POSIX
find . -name '*.TXT' -exec printf x%.s {} + | wc -c
答案 3 :(得分:2)
使用bash:
shopt -s globstar nullglob
然后,
files=(**/*.TXT)
nfiles=${#files[@]}
或
nfiles=$( printf "%s\n" **/*.TXT | wc -l )