列出所有目录并按大小排序

您所在的位置:网站首页 linux列出两个文件的大小命令 列出所有目录并按大小排序

列出所有目录并按大小排序

2024-07-09 01:20| 来源: 网络整理| 查看: 265

列出所有目录并按大小排序

当需要在 Linux 上整理硬盘时,无论是为了释放空间还是为了变得更有条理,确定哪些目录消耗最多的存储空间会很有帮助。

在本指南中,我们将通过命令行示例、Bash 脚本和 GUI 方法向您展示如何在 Linux 上列出所有目录并按总大小对它们进行排序。

在本教程中您将学习:

如何使用 du 命令示例按大小列出目录

如何使用 Bash 脚本按大小列出目录

如何使用磁盘使用分析器 GUI 实用程序检查目录大小

列出 Linux 上最大的目录

通过命令行按大小列出目录

df 和 du 命令行实用程序是我们在 Linux 上测量磁盘消耗的两个最佳工具。要按文件夹检查磁盘使用情况,du 命令特别有用。

在没有任何额外选项的情况下运行 du 时,请记住,它将分别检查每个子目录的总磁盘使用情况。根据文件夹结构的深度,这可能是大量目录,并且您的终端将充斥着大量输出。

在下面的示例中,我们在一个充满 Linux ISO 文件的目录上运行 du,但它只有一个目录深。我们将附加 -h (人类可读)选项,以便更轻松地查看这些目录占用的空间类型。

$ du -h 11G ./AlmaLinux 671M ./Arch Linux 14G ./CentOS 349M ./Debian 1.9G ./Fedora 415M ./Gentoo 6.5G ./Kali Linux 9.4G ./Ubuntu 44G .

我们可以看到 AlmaLinux 文件夹使用了 11 GB,而 Debian 文件夹仅使用了 349 MB。所有这些文件夹的总大小为 44 GB,如最后一行所示。

让我们看看如果我们有更深的文件夹结构会发生什么。

$ du -h 671M ./Arch Linux 6.5G ./Debian-based/Kali Linux 9.4G ./Debian-based/Ubuntu 17G ./Debian-based 415M ./Gentoo 11G ./RHEL-based/AlmaLinux 14G ./RHEL-based/CentOS 1.9G ./RHEL-based/Fedora 27G ./RHEL-based 44G .

正如您所看到的,“Debian-based”和“RHEL-based”目录分别有两个和三个子目录。这使我们能够更详细地了解每个子目录使用了多少空间。如果您有深层结构,我们可以使用 --max-depth=N 标志来告诉 du 它应该遍历多少个子目录深度。

$ du -h --max-depth=1 671M ./Arch Linux 17G ./Debian-based 415M ./Gentoo 27G ./RHEL-based 44G .

要按大小对这些目录进行排序,以便轻松识别哪些目录占用的空间最多,我们可以将 du 命令通过管道传递给 sort 实用程序。如果您在 du 上使用 -h 选项,请确保在 sort 上也使用它。

$ du -h | sort -h 415M ./Gentoo 671M ./Arch Linux 1.9G ./RHEL-based/Fedora 6.5G ./Debian-based/Kali Linux 9.4G ./Debian-based/Ubuntu 11G ./RHEL-based/AlmaLinux 14G ./RHEL-based/CentOS 17G ./Debian-based 27G ./RHEL-based 44G .

或者,限制递归遍历的目录数量:

$ du -h --max-depth=1 | sort -h 415M ./Gentoo 671M ./Arch Linux 17G ./Debian-based 27G ./RHEL-based 44G .

在这些示例中,我们一直在当前工作目录中运行 du。请记住,您可以使用该命令指定任何目录 - 您不必实际位于您正在检查的目录中。

$ du -h /home/linuxconfig

如果您尝试在根目录上运行 du 以查看整个磁盘的存储空间,请记住,您需要使用 root 权限执行该命令,并且应该将标准错误重定向到 /dev/null 因为你会在输出中收到很多“权限被拒绝”的垃圾邮件。

$ sudo du -h --max-depth=1 / | sort -h 2> /dev/null 列出前 10 个最大的目录

使用上面的命令,即使是小目录也会在 du 命令输出中列出。然而,很多时候您可能只对 10 个最大的目录或类似的数字感兴趣。在这种情况下,我们可以将输出通过管道传输到 head 命令以仅显示最大的目录。请注意,我们还使用 tail 命令来避免打印父目录的大小,这在本例中是无关紧要的。

$ du -h --max-depth=1 2> /dev/null | sort -hr | tail -n +2 | head 按大小列出目录的 Bash 脚本

du 和 sort 命令以及我们已经讨论过的选项应该足以帮助您轻松地按文件夹检查磁盘使用情况。我们可以通过将所有这些放入 Bash 脚本中来让我们的生活变得更轻松,而不是记住这些不同的命令选项,并且每次都必须输入它们。

以下 Bash 脚本将接受 2 个参数。第一个参数是我们将在其中开始搜索的目录名称,第二个参数将是脚本应输出的多个目录。

#!/bin/bash if [ $# != 2 ]; then echo "Incorrect number of arguments !" >&2 echo "USAGE: sortdirbysize [DIRECTORY] " fi du -h --max-depth=1 $1 2> /dev/null | sort -hr | tail -n +2 | head -$2

以下是如何从命令行执行脚本的示例:

$ ./sort-dir-by-size.sh /home/linux 15 通过 GUI 按文件夹检查磁盘使用情况

有时,如果我们使用 GUI 实用程序,更容易可视化磁盘使用情况。其中一个应用程序称为“磁盘使用分析器”,但默认情况下您的 Linux 发行版上可能不会安装它。使用下面适当的命令通过系统的包管理器安装它。

有时,如果我们使用 GUI 实用程序,更容易可视化磁盘使用情况。其中一个应用程序称为“磁盘使用分析器”,但默认情况下您的 Linux 发行版上可能不会安装它。使用下面适当的命令通过系统的包管理器安装它。

要在 Ubuntu、Debian 和 Linux Mint 上安装磁盘使用分析器:

$ sudo apt install baobab

要在 CentOS、Fedora、AlmaLinux 和 Red Hat 上安装磁盘使用分析器:

$ sudo dnf install baobab

要在 Arch Linux 和 Manjaro 上安装磁盘使用分析器:

$ sudo pacman -S baobab

安装后,搜索并打开该应用程序。

从应用程序启动器打开磁盘使用分析器

当程序打开时,它会询问您是否要扫描主目录或整个磁盘。您还可以单击选项菜单(三叠线)来扫描特定文件夹。

选择扫描主文件夹、整个磁盘或选择特定目录

做出选择后,实用程序将开始扫描文件。一旦完成内容扫描,它将为您提供硬盘空间如何分配到系统上各个目录的完整读数。还有一个图形表示,您可以将鼠标光标移到上面以获得更好的想法。它按大小列出目录,因此您可以快速确定占用磁盘空间最多的目录。

磁盘使用分析器显示不同目录中存储空间的使用情况

结束语

在本指南中,我们了解了如何在 Linux 上列出目录并按总大小对它们进行排序。这涉及各种命令行示例,主要围绕 du 实用程序以及 Bash 脚本和 GUI 方法。所有方法都能够为我们提供存储使用情况的快速摘要,或者系统上各个目录之间存储空间使用情况的详细细分。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3