寻找一系列命令,能够显示驱动器上最大的文件。
find
命令配合-size
选项。下面的命令将列出所有大于10MiB(不要与10MB混淆)的文件:find / -size +10M -ls
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
列出了一些可用于磁盘使用分析的程序。其中一个看起来非常有前途的应用是 gt5
。
根据软件包描述:
多年过去了,硬盘变得越来越大,但即使在这个巨大的硬盘时代,空间似乎也会随着时间消失。这个小而有效的程序提供比默认的 du(1) 更方便的列表显示。它显示自上次运行以来发生的情况,并显示目录大小和总百分比。可以使用基于文本的浏览器(如 links、elinks、lynx 等)的光标键导航和上升到目录。
ncdu
。根据其软件包描述:-ls
输出的格式是固定的(请参阅 pred_fls
和 list_file 函数的源代码)。你可以尝试使用 -printf
选项来近似输出结果,然后使用 awk 进行后处理,或者使用类似 find ... -type f -exec ls -ldh {} \; | column -t
的方法。 - Lekensteyndu -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
参数:
-a
用于显示所有文件和目录。如果只想显示目录,则不需要该参数。-BM
以兆字节(M)块大小(B)输出文件大小。2>/dev/null
- 排除“权限被拒绝”的错误消息(感谢 @Oli)。sort
参数:
-n
用于按数字排序。-r
用于反向排序(从大到小)。head
参数:
-n 50
仅显示前50个结果。more
。注意:如果要包括您的帐户没有访问权限的目录,请在前面加上 sudo
。
示例:显示 /var 目录中前10个最大的文件和目录(包括总计)。
cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M .
6794M ./lib
5902M ./lib/mysql
3987M ./lib/mysql/my_database_dir
1825M ./lib/mysql/my_database_dir/a_big_table.ibd
997M ./lib/mysql/my_database_dir/another_big_table.ibd
657M ./log
629M ./log/apache2
587M ./log/apache2/ssl_access.log
273M ./cache
du
和 sort
的组合。sudo du -sx /* 2>/dev/null | sort -n
0 /cdrom
0 /initrd.img
0 /lib64
0 /proc
0 /sys
0 /vmlinuz
4 /lost+found
4 /mnt
4 /nonexistent
4 /selinux
8 /export
36 /media
56 /scratchbox
200 /srv
804 /dev
4884 /root
8052 /bin
8600 /tmp
9136 /sbin
11888 /lib32
23100 /etc
66480 /boot
501072 /web
514516 /lib
984492 /opt
3503984 /var
7956192 /usr
74235656 /home
du
的帮助页:“对每个文件递归地总结磁盘使用情况。” - Jamiedu -ah . | sort -rh | head -20
du -a . | sort -rn | head -20
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
-h
仅适用于 GNU 的 sort
命令,所以为了在 OSX/BSD 上正常工作,您需要从 coreutils
中安装它。然后将其文件夹添加到您的 PATH
中。alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries
find
的完美应用场景:find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
$DIRECTORY
中找到所有的文件,并对它们执行ls -s
命令。最后一个命令会打印出文件的分配大小和文件名。结果按数字排序,显示最后五个条目。因此,你将看到$DIRETORY
或任何子目录中最大的5个文件。如果你输入tail -n 1
,你将只看到最大的文件。find
进行很多操作。例如,你可以查找比n天更年轻的文件(-ctime -n
),或者属于特定用户的文件(-user johndoe
)。find / -size +50M -type f -exec du -h {} \; | sort -n
du -h -a /dir | grep "[0-9]G\b"
du -chd1 .
- Charlie Parker