我们有一组包含lucene索引的目录.每个索引都是不同文件类型的混合(按扩展名区分),例如:
0/index/_2z6.frq 0/index/_2z6.fnm .. 1/index/_1sq.frq 1/index/_1sq.fnm ..
(这是大约10种不同的扩展)
我们希望通过文件扩展名获得总计,例如:
.frq 21234 .fnm 34757 ..
我已经尝试过du / awk / xargs的各种组合,但发现这很难做到.
对于任何给定的扩展,您可以使用
find /path -name '*.frq' -exec ls -l {} \; | awk '{ Total += $5} END { print Total }'
经过一番思考
#!/bin/bash ftypes=$(find . -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq) for ft in $ftypes do echo -n "$ft " find . -name "*${ft}" -exec ls -l {} \; | awk '{total += $5} END {print total}' done