我正在做一个特定的项目,我需要计算出大量文档摘录的构成,以便我们有一个性能测试的基线。
具体来说,我需要一个可以递归遍历目录的命令,对于每种文件类型,通知我该类型的文件数量及其平均大小。
我看过以下解决方案:Unix查找平均文件大小,如何使用单行递归打印文件名少于 25 个字符的文件列表?和 https://unix.stackexchange.com/questions/63370/compute-average-file-size,但没有什么能让我达到我所追求的。
这个 du 和 awk 组合应该适合你:
du -a mydir/ | awk -F'[.[:space:]]' '/.[a-zA-Z0-9]+$/ { a[$NF]+=$1; b[$NF]++ }
END{for (i in a) print i, b[i], (a[i]/b[i])}'
给你一些开始的东西,下面的脚本,你会得到一个文件列表及其大小,逐行。
#!/usr/bin/env bash
DIR=ABC
cd $DIR
find . -type f |while read line
do
# size=$(stat --format="%s" $line) # For the system with stat command
size=$(perl -e 'print -s $ARGV[0],"n"' $line ) # @Mark Setchell provided the command, but I have no osx system to test it.
echo $size $line
done
输出示例
123 ./a.txt
23 ./fds/afdsf.jpg
然后是你的家庭作业,上面的输出,你应该很容易得到文件类型和它们的平均大小
你可以使用"du"也许:
du -a -c *.txt
示例输出:
104 M1.txt
8 in.txt
8 keys.txt
8 text.txt
8 wordle.txt
136 total
输出以 512 字节块为单位,但您可以使用"-k"或"-m"进行更改。