Linux 中按大小对 du 命令输出进行排序
学习使用 du 命令并根据大小排序输出。
du命令用于查看Linux中目录和文件所使用的空间。这意味着您可以找到占用最大和最小大小的文件和目录。
但默认情况下,du 命令不允许您按大小对输出进行排序。
那么如何按大小对 du 命令输出进行排序呢?简单的!
通过管道将输出传递给排序命令。在本教程中,我将分享几个如何按大小对输出进行排序的示例。
如何对 du 命令输出进行排序
正如我之前提到的,du 命令没有对输出进行排序的内置功能,因此您必须将其通过管道传递给 sort 命令。
最简单的形式是这样的:
du /path/to/directory | sort
但正如您所看到的,输出不是人类可读的,而且无法控制它会向您显示多少项目。
这就出现了使用多个标志来调整输出的概念。
例如,如果您希望获得与上述相同的输出,但采用人类可读的形式,那么您可以使用 -h
标志,如下所示:
du -h /path/to/directoy | sort -rh
我在 du 命令中使用 -r
标志的原因是反转 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
或者,如果您想找出带有 --max-depth
标志的 10 个最大文件,那么,您可以参考以下语法:
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
:根据尺寸参数发起搜索。-
:这里文件大小之前的-
符号表示文件应小于指定的大小。-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 -
,要指定最大范围,请使用 -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 与现代彩色输出的组合,以下是在 Linux 中安装和使用 duf 命令的方法:
我希望我使用 du 命令对文件进行排序对您来说很容易。