我将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
一起使用)。有了这个选项,它可以对人类可读的数字进行排序,就像这里有后缀k
,M
,等等,或者没有后缀。
分类之后,只需要找到切割的地方。