gpt4 book ai didi

linux - 如何在 bash 中按文件扩展名和大小对目录进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:13 25 4
gpt4 key购买 nike

我想制作一个脚本,该脚本将按扩展名打印文件夹和子文件夹中的所有文档,计算该文件类型和大小的数量。

    Example: 
file type | total count | total size
pdf 30 4.0k
txt 90 60.0k

类似的东西。除了尺寸部分,我已经能够弄清楚如何做到这一点。有什么建议么?

最佳答案

find . -type f -print0 | xargs -0 du -k | grep "\.[a-zA-Z]*$" | rev | sed -e "s/\..*\t/\t/g" | rev | awk '{SUM[$2]=+$1} END{for (x in SUM) print x,SUM[x]}' | sort

解释

find . -type f -print0

查找子目录中的所有文件并打印它们,以空字符 (somefile.abc) 分隔

| xargs -0 du -k

对于每个文件,它以千字节为单位打印大小 (12<TAB>somefile.abc)

| grep "\.[a-zA-Z0-9]*$"

仅选择以点和一些扩展名 ( 12<TAB>somefile.abc ) 结尾的文件

| rev

按字符反转每一行(cba.elifemos<TAB>21)

| sed -e "s/\..*\t/\t/g"

删除点和 ( cba<TAB>21) 之间的所有字符

| rev

按字符反转每一行(12<TAB>abc)

| awk '{SUM[$2]=+$1} END{for (x in SUM) print x,SUM[x]}'

根据分机求和

关于linux - 如何在 bash 中按文件扩展名和大小对目录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com