我必须通过扩展递归计算目录和子目录中的大量文件,并获得每个扩展的总大小。
我不希望看到旁边有类型和大小的单个文件。
例如,这将是一个潜在的输出:
JPEG - 123 Files - 321MB Total;
AVI - 321 Files - 123MB Total;
MP4 - 111 Files - 111MB Total;
我尝试使用ls -lshR
,然后将结果汇总到grep
,但由于环境的限制,我无法创建脚本文件来解析结果。我正在努力工作。我在一个命令中坚持实际计算ls -lshR | grep ".txt"
的结果中的大小。
答案 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