命令列出目录中的所有文件类型及其平均大小

  • 本文关键字:类型 文件 命令 macos bash unix
  • 更新时间 :
  • 英文 :


我正在做一个特定的项目,我需要计算出大量文档摘录的构成,以便我们有一个性能测试的基线。

具体来说,我需要一个可以递归遍历目录的命令,对于每种文件类型,通知我该类型的文件数量及其平均大小。

我看过以下解决方案: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"进行更改。

相关内容

  • 没有找到相关文章

最新更新