按大小对命令输出进行排序

du命令用于查看目录和文件所占用的空间 Linux。 这意味着您可以找到最大和最小的文件和目录。

但是,du 命令默认不允许您按大小对输出进行排序。

那么如何按大小对命令输出进行排序呢? 简单地!

通过将输出定向到排序命令。 在本教程中,我将分享几个如何按大小对输出进行排序的示例。

如何对命令输出进行排序

正如我所提到的,du 命令没有内置函数来对输出进行排序,因此您必须将其通过管道传递给 sort 命令。

最简单的形式如下所示:

du /path/to/directory | sort

但正如您所看到的,输出不是人类可读的,也无法控制显示的项目数。

然后是使用多个标志来优化输出的概念。

例如,如果您想获得与上面相同的输出,但以人类可读的形式,您可以使用以下命令 -h 标志如图:

du -h /path/to/directoy | sort -rh

我使用这个的原因 -r du 命令的标志用于反转 du 命令的输出并按降序显示输出(从最大到最小的文件)。

我将向您展示还可以使用 du 命令执行哪些操作。

1. 找到最大的10个文件

之前我解释了如何按降序对文件进行排序,但现在我们需要 10 个最大的文件。

为此,您需要修剪除前 10 行之外的输出,为此我将它们通过管道传输到 head 命令:

du -h /path/to/directory | sort -rh | head -n 10

2.指定搜索文件的深度

对于那些不知道的人来说,目录中还有子目录,并且该链一直持续到最后一个子目录出现。

默认情况下,du 命令启动递归搜索,这意味着搜索直到出现最后一个子目录,您可能不希望出现这种行为。

要指定可以使用的文件搜索深度: --max-depth 旗帜。

例如,如果我想搜索最大深度 2 那么我将使用 --max-depth=2 语法如下:

du -h --max-depth=2 /path/to/directory | sort -rh

或者,如果您想找出 10 个最大的文件 --max-depth flag你可以参考下面的语法:

du -h --max-depth=2 /path/to/directory | sort -rh | head -n 10

3.按文件类型对文件进行排序

这太有趣了。 您有多少次搜索过某个文件但记不起文件名? 好几次了(至少发生在我身上)。

但唯一的共同点是我们知道文件类型。 例如,您可能忘记了脚本的名称,但它会 .sh 扩展是安全的。

du 命令使其更相关,因为您可以对文件进行排序。

要对基于文件类型的软文件使用 du 命令,您所要做的就是将文件类型附加到目录路径的末尾,如下所示:

du -h /path/to/directory*.<File_extension> | sort -rh 

例如,如果我想对所有内容进行排序 .mkv 文件,然后我使用以下内容:

du -h ~/Downloads/*.mkv | sort -rh

4、对特定文件大小范围内的文件进行排序

对一定大小范围内的文件进行排序是对文件进行排序的最佳方法之一。 不幸的是,排序命令没有相应的内置功能。

这就是使用 find 命令的用武之地,它允许您设置开始搜索的最小或最大阈值。

在本节中,我将引导您了解如何:

  • 查找小于指定大小的文件
  • 查找大于指定大小的文件
  • 搜索指定范围(大于 x 且小于 y)内的文件。

那么让我们从第一个开始。

对小于特定大小的文件进行排序

要对小于指定大小的文件进行排序,需要将“find”命令与“du”和“sort”命令结合使用,如下所示:

find ~/Path/to/file -type f -size -<file_size> -exec du -h {} + | sort -rh

这里,

  • -type -f:表示您只想搜索文件。
  • size:根据尺寸参数开始搜索。
  • -<file_size>: 这里这个 - 文件大小前面的图标表示文件应小于指定的大小。
  • -exec du -h {}:运行带有人类可读标志的 du 命令。
  • sort -rh:使用带有人类可读标志 (-h) 的反向排序命令。

假设我想查找大小小于 1GB 的文件。 然后我使用以下内容:

find ~/THE_DU/ -type f -size -3G -exec du -h {} + | sort -rh

对大于指定大小的文件进行排序

对上面的命令稍加修改,就可以找到大于指定大小的文件:

find ~/Path/to/file -type f -size +<file_size> -exec du -h {} + | sort -rh

正如你所看到的,我只需要使用 + 在文件大小前输入一个字符,大于指定范围的文件将被排序。

例如这里我对大于 3GB 的文件进行排序:

find ~/Downloads/ -type f -size +3G -exec du -h {} + | sort -rh

对指定范围内的文件进行排序

从标题中可以看出,这里需要创建一个范围,在其中指定文件的最小和最大范围。

要指定最小范围,请使用 -size -<File_size> 并最大限度地利用 -size +<File_size> 语法如下:

find ~/Path/to/file -type f -size +<file_size> -size -<file_size> -exec du -h {} + | sort -rh

例如,如果我想对大小在 3GB 到 5GB 之间的文件进行排序,我使用:

find ~/Downloads/ -type f -size +3G -size -5G -exec du -h {} + | sort -rh

下一页: du 命令的现代替代品

如果您正在寻找 du 命令的现代替代品,或者只是想要 du 命令的更好版本,则必须尝试 duf 命令。

它是 du 和 df 与现代彩色输出的组合。 以下是如何安装和使用 duf 命令 Linux:

我希望我能让您轻松地使用 du 命令对文件进行排序。