我将du重定向到一个名为stdout.txt的文件中,该文件的内容如下所示(例如):

4.0K    ./Makefile.am
20K     ./dfasearch.c
8.0K    ./dosbuf.c
4.0K    ./egrep.sh
84K     ./grep.c
4.0K    ./grep.h
8.0K    ./kwsearch.c
36K     ./kwset.c
4.0K    ./kwset.h
12K     ./pcresearch.c
4.0K    ./search.h
4.0K    ./searchutils.c
4.0K    ./system.h

从该文件中,我希望只能显示高于或低于给定大小值的行。”sort-h“让我有一部分的路要走,我想,但我不知道如何去挑选我不需要的线路。例如,假设我只想打印代表12K或更低文件的行,那么我的输出应该如下所示:
4.0K    ./Makefile.am
8.0K    ./dosbuf.c
4.0K    ./egrep.sh
4.0K    ./grep.h
8.0K    ./kwsearch.c
4.0K    ./kwset.h
12K     ./pcresearch.c
4.0K    ./search.h
4.0K    ./searchutils.c
4.0K    ./system.h

有没有一个通用的工具可以按照人类可读的大小自然地进行排序,并且只显示给定大小下面(在本例中)的行?理想情况下,我希望有一些bash代码,可以用来生成高于或低于用户提供的数字(可以用K、MB或GB等表示)的输出。

最佳答案

您可以将sort与选项-h一起使用(至少与GNU coreutils版本8.25中的sort一起使用)。有了这个选项,它可以对人类可读的数字进行排序,就像这里有后缀kM,等等,或者没有后缀。
分类之后,只需要找到切割的地方。

09-30 14:27