25

如何du按字母顺序列出命令的结果?

我知道我可以使用该find命令按字母顺序列出它们,但没有目录大小,我也使用这-maxdepth两个命令的选项,以便列表只出现在一个子目录中。

这是斜体字的问题:

编写一个实现目录大小分析器的 shell 脚本。在您的脚本中,您可以使用常见的 Linux 命令。该脚本应该列出给定参数的每个直接子目录或当前目录(如果没有给出参数)占用的磁盘存储空间,子目录名称按字母顺序排列。此外,列出磁盘使用率最高的子目录的名称及其存储大小。如果多个子目录具有相同的最高磁盘使用率,请列出这些子目录中的任何一个。包括有意义的简短评论。适用于此脚本的 bash 命令列表包括但不限于:cat、cut、du、echo、exit、for、head、if、ls、rm、sort、tail、wc。您可以使用 bash 变量以及临时文件来保存中间结果。在执行结束时删除所有临时文件。

这是我在命令行中输入du $dir -hk --max-depth=2 | sort -o temp1.txtthen后的结果:cat temp1.txt

12      ./IT_PLAN/Inter_Disciplinary
28      ./IT_PLAN
3       ./IT_PLAN/Core_Courses
3       ./IT_PLAN/Pre_reqs
81      .
9       ./IT_PLAN/IT_Electives

它应该如下所示:

28      ./IT_PLAN
3       ./IT_PLAN/Core_Courses
12      ./IT_PLAN/Inter_Disciplinary
9       ./IT_PLAN/IT_Electives
The subdirectory with the maximum disk space use:
28      ./IT_PLAN

再一次,我无法按字母顺序对结果进行排序。

4

2 回答 2

45

尝试这样做:

du $dir -hk --max-depth=2 | sort -k2

-k2是列号 2

请参阅http://www.manpagez.com/man/1/sort/

于 2012-11-19T10:37:04.470 回答
1

du $dir -hk --max-depth=2 |awk '{print $2"\t"$1}'|sort -d -k1 -o temp1.txt 如果你想删除 ./ 路径

 du $dir -hk --max-depth=2 |awk '{print $2"\t"$1}'|sed -e 's/\.\///g'|sort -d -k1 -o temp1.txt
于 2012-11-19T10:39:15.863 回答