Linux列出10个最大的子目录
$du -h --max-depth=1 2> /dev/null | sort -hr | tail -n +2 | head
用于按大小列出目录的 Bash 脚本
我们可以把命令放入 Bash 脚本中:
#!/bin/bash if [ $# != 2 ]; then echo "Incorrect number of arguments !" >&2 echo "USAGE: sortdirbysize [DIRECTORY] <first n directories>" fi du -h --max-depth=1 $1 2> /dev/null | sort -hr | tail -n +2 | head -$2
用法:
第一个参数将是一个目录名称,我们将其中开始搜索,第二个参数将是脚本应输出的多个目录。
列出 /home/linux 中最大的15个文件或者子目录:
$./sort-dir-by-size.sh /home/linux 15
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 .
如果我们有更深的文件夹结构会发生什么。
$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 .
这使我们可以相当详细地了解每个子目录使用了多少空间。
如果你有一个很深的结构,我们可以使用--max-depth = N
标志来告诉du
它应该遍历多少个子目录深度。
$du -h --max-depth=1 671M ./Arch Linux 17G ./Debian-based 415M ./Gentoo 27G ./RHEL-based 44G .
要按大小对这些目录进行排序,可以使用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 -h /home/onitroad
如果在根目录中运行du
,则会收到很多“permission denied 权限被拒绝”的信息。
可以将这些标准错误重定向到 /dev/null
进行丢弃:
$sudo du -h --max-depth=1 /| sort -h 2> /dev/null
日期:2020-07-07 20:56:50 来源:oir作者:oir