我正在开发一个特定的项目,我需要编制大量文档,以便我们有一个性能测试基准。
具体来说,我需要一个可以递归遍历目录的命令,并且对于每种文件类型,告诉我该类型的文件数量及其平均大小。
我看过像这样的解决方案: Unix find average file size, How can I recursively print a list of files with filenames shorter than 25 characters using a one-liner?和https://unix.stackexchange.com/questions/63370/compute-average-file-size,但没有什么能让我完全了解我所追求的目标。
答案 0 :(得分:6)
这个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])}'
答案 1 :(得分:2)
给你一些东西开始,用下面的脚本,你会得到一个文件列表及其大小,逐行。
#!/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
那么这是你的作业,有了上面的输出,你应该很容易得到文件类型和它们的平均大小
答案 2 :(得分:0)
您可以使用“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”更改它。