gpt4 book ai didi

linux - 使用 "du"命令获取大小和其他信息

转载 作者:太空宇宙 更新时间:2023-11-04 09:01:30 24 4
gpt4 key购买 nike

我正在 bash 上做一个小脚本,它显示以 mb 为单位的总大小、文件数、文件夹数和文件夹名称。除了以 mb 为单位的大小,我几乎拥有所有东西

du -a -h | cut -d/ -f2 | sort | uniq -c

它显示的是这样的:

  4 01 folder 01
6 02 folder 02
11 03 folder 03
13 04 folder 04
16 05 folder 05
.....
15 13 folder 13
1 5.7G .

如您所见,排序是:文件数、文件夹数和名称。

我想要这个:

  300M 4 01 folder 01
435M 6 02 folder 02
690M 11 03 folder 03
780M 13 04 folder 04
1.6G 16 05 folder 05
.....
15 13 folder 13
1 5.7G .

提前致谢。

PD 有什么方法可以像这样在每一列上显示名称?

  M    F  # name
300M 4 01 folder 01
435M 6 02 folder 02
690M 11 03 folder 03
780M 13 04 folder 04
1.6G 16 05 folder 05
.....
15 13 folder 13
1 5.7G .

最佳答案

这个怎么样?

echo -e "Size\tFiles\tDirectory"; paste <(du -sh ./*/ | sort -k2 | cut -f1) <(find ./*/ | cut -d/ -f2 | uniq -c | sort -k2 | awk '{print ($1-1)"\t"$2}') | sort -nk2

示例输出:

Size    Files   Directory
172M 36 callrecords
17M 747 manual
83M 2251 input
7.5G 16867 output

解释:

添加标题:

echo -e "Size\tFiles\tDirectory";

<(COMMAND) 是一种结构,它允许命令的输出像文件一样使用。 Paste需要 2 个文件,并排输出它们。所以我们将两个命令的输出粘贴在一起。第一个是这样的:

<(du -sh ./*/ | sort -k2 | cut -f1)

它简单地找到当前文件夹的子文件夹的大小,总结里面的任何东西。然后根据文件/文件夹的名称对其进行排序,然后采用第一列。这为我们提供了当前文件夹的子文件夹大小列表,按名称排序。

第二个命令是这样的:

<(find ./*/ | cut -d/ -f2 | uniq -c | sort -k2 | awk '{print ($1-1)"\t"$2}')

这类似于您的原始命令 - 它在当前目录下查找文件夹,截断名称以仅包含第一个子级别,然后对它们进行计数以给出当前文件夹的子文件夹列表以及文件数在每个。然后按文件夹名称排序,awk 命令格式化结果并从每个文件夹的文件计数中减去 1(因为包括文件夹本身)。然后我们可以将结果粘贴在一起以获得(几乎)最终输出。

最后,我们对粘贴命令的输出使用 sort -nk2 以在第二个字段上按数字排序 - 即文件数。

关于linux - 使用 "du"命令获取大小和其他信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20465373/

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