Shell du 命令提示 – 估计文件空间使用情况并排除特定文件
du 命令估算文件空间使用情况并总结每个文件的磁盘使用情况,以目录为单位递归。
它显示每个文件参数以及每个目录参数所根文件层次结构中的每个目录的文件系统块使用情况。如果未指定文件,它将使用当前目录。
但是为什么要使用 du 命令?
您一定想知道为什么我要重点介绍 du 命令。du 通常由系统管理员用来自动执行监控和通知程序,以帮助防止目录变满。
du 命令示例
输入 du 显示当前目录中的使用情况:
$ du
传递 -h 选项以字节、千字节、兆字节、千兆字节、太字节和拍字节(人类可读的输出)显示输出
$ du -h
显示 /ramdisk/figs/ 目录中每个 png 文件的名称和大小以及所有 png 的总数:
$ du -hc /ramdisk/figs/*.png
另一个有用的选项是 -c,它产生总计:
$ du -c
显示 /home/vivek 子目录的磁盘使用情况:
$ du /home/vivek
仅显示 /home/vivek 的磁盘使用情况摘要
$ du -hs /home/vivek
排除与 PATTERN 匹配的文件。例如,不计算 *.obj 或 *.jpg 文件:
$ du -h --exclude='*.obj' $ du -h --exclude='*.jpg'
PATTERN 是 shell 模式(不是常规 perl 或其他表达式)。模式 ? 匹配任意一个字符,而 * 匹配任意字符串。
管道和过滤器
现在显示按文件大小排序的所有内容:
$ du -sk .[A-z]* *| sort -n
一次显示整屏输出,因为 du 生成的输出超出了控制台/屏幕可以容纳的范围:
$ du -h | less
要查找前 3 个目录,请输入:
$ cd /chroot
$ du -sk * | sort -nr | head -3
4620348 var 651972 home 27896 usr 21384 lib64
无需工作
最后这里有一个命令行(没有 du 命令),以 Mb 为单位打印前 10 个文件大小(感谢 dreyser 提交的想法):
# find /var -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s\n", size,$2);}' | head
输出:
31Mb /var/crash/_usr_lib_firefox_firefox-bin.1000.crash 22Mb /var/cache/apt/archives/linux-image-2.6.20-16-generic_2.6.20-16.28_i386.deb 16Mb /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_feisty_universe_binary-i386_Packages 15Mb /var/cache/apt/archives/linux-restricted-modules-2.6.20-16-generic_2.6.20.5-16.28_i386.deb 9Mb /var/cache/apt/srcpkgcache.bin 9Mb /var/cache/apt/pkgcache.bin 8Mb /var/cache/apt/archives/firefox_2.0.0.4+1-0ubuntu1_i386.deb 7Mb /var/cache/apt/archives/linux-headers-2.6.20-16_2.6.20-16.28_i386.deb 5Mb /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_feisty_main_binary-i386_Packages 5Mb /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_feisty_universe_source_Sources
关于 GUI 工具的说明
您可以使用 GUI 工具来查找文件和目录树的大小。只需右键单击文件名,然后从弹出菜单中选择“属性”。
这对新用户来说很好,但它不提供您提供给我们的脚本功能和精细增益报告选项。