按类型和大小对文件夹及其子文件夹中的文件进行排序

时间:2015-05-15 23:07:40

标签: bash file size aggregate file-extension

我必须通过扩展递归计算目录和子目录中的大量文件,并获得每个扩展的总大小。

我不希望看到旁边有类型和大小的单个文件。

例如,这将是一个潜在的输出:

JPEG - 123 Files - 321MB Total;
AVI - 321 Files - 123MB Total;
MP4 - 111 Files - 111MB Total;

我尝试使用ls -lshR,然后将结果汇总到grep,但由于环境的限制,我无法创建脚本文件来解析结果。我正在努力工作。我在一个命令中坚持实际计算ls -lshR | grep ".txt"的结果中的大小。

1 个答案:

答案 0 :(得分:0)

你可以进一步了解你的评论解决方案,

 find /boo -ls \
 | awk '/.*\.txt/{txtTot+=$6}; /.*\.mp4/{mp4Tot+=$6} END {print "Txt Tot=" txtTot "\nMP4 Tot=" mp4Tot}'

这会获取/boo下的所有文件,awk /.*\.txt/等是reg表达式,只匹配.txt行。同样适用于.mp4。继续添加任意数量的内容。在处理中跳过任何你不关心的事情。

(您的find可能会将文件大小放在不同的字段num中,只需查看输出并根据需要将引用更改为$ 6。

然后接下来的事情是使用awk数组按类型动态地总计文件大小,但在你担心之前,请阅读更多关于awk的内容。

(我现在没有办法对此进行测试,因此可能会遗留一些小的语法问题。根据awk的版本,您可能会收到有用的错误消息; - /)

IHTH