查找Linux中占用磁盘空间最多的文件和目录
嘻嘻发布于2020-08-18
最后更新于2020年8月18日
浏览对于Linux系统来说,磁盘全部被占满的文件系统可能带来灾难。有时候,即使您知道磁盘已经满了,仍然很难找到问题目录。在这个Linux快速提示中,我们将向您展示如何查找大型文件和目录。
查找使用最多磁盘空间的目录
du命令允许您从命令行检查磁盘使用情况。单独使用时,它将递归遍历每个子目录并显示其大小。但是,如果您将它与其他一些命令配对,您可以缩小搜索范围。在下面的示例中,我们使用’ du -h ‘命令列出人类可读格式中的目录使用情况。然后我们通过管道将’ du ‘输出到’ sort ‘。这允许我们按照“-hr”的倒序执行人类可读的数字排序。这将把最大的目录放在列表的顶部。
[mcherisi@putorius Desktop]$ du -h | sort -hr | head -10
9.4G .
4.9G ./Music
4.5G ./ISO_Files
3.6G ./Music/Pink Floyd
1.1G ./Music/AC-DC
362M ./Music/Pink Floyd/2001 - Echoes - The Best of Pink Floyd
344M ./Music/Pink Floyd/1995 - Pulse
252M ./Music/10,000 Maniacs
242M ./Music/Pink Floyd/1988 - Delicate Sound Of Thunder
208M ./Music/Pink Floyd/1973 - Dark Side Of The Moon
缩小搜索范围的一种好方法是将du命令限制在最上面的目录(最大目录深度)。这允许您发现哪个顶级目录占用的空间最多。然后您可以将目录更改为该目录并执行另一次运行。在这里,我们告诉du命令使用’ -d 1 ‘选项只深入一个目录。
[mcherisi@putorius Desktop]$ du -d 1 | sort -n -r
9832936 .
5133352 ./Music
4688216 ./ISO_Files
11336 ./Videos
20 ./Pictures
8 ./Documents
现在我们知道音乐目录存储的数据最多。我们可以将’cd
该目录并再次运行’ du ‘,以查看哪个子目录使用的空间最多。
[mcherisi@putorius Music]$ du -d 1 | sort -n -r
5133352 .
3726032 ./Pink Floyd
1149744 ./AC-DC
257572 ./10,000 Maniacs
当您有大量的目录时,这种方法特别有用。
找到最大的文件和目录
默认情况下,du命令只显示目录。通过“-a”(all)选项,它将显示目录之外的文件。
[mcherisi@putorius Desktop]$ du -ah | sort -hr | head -5
9.4G .
4.9G ./Music
4.5G ./ISO_Files
3.6G ./Music/Pink Floyd
2.6G ./ISO_Files/kali-linux-2019.4-amd64.iso
只查找最大文件
如果我们只搜索文件,那么du命令不是这个任务的合适工具。对于这个任务,我们必须使用find命令。在下面的例子中,我们使用find . -type f
。这指示find只在当前目录中查找文件。然后,我们通过输出’ -exec ‘来运行’ du -a ‘命令。
[mcherisi@putorius Desktop]$ find -type f -exec du -ah {} + | sort -hr | head -5
2.6G ./ISO_Files/kali-linux-2019.4-amd64.iso
1.9G ./ISO_Files/linuxmint-19.3-cinnamon-64bit.iso
55M ./Music/Pink Floyd/1970 - Atom Heart Mother/01 - Atom Heart Mother.mp3
54M ./Music/Pink Floyd/1971 - Meddle/06 - Echoes.mp3
48M ./Music/Pink Floyd/Star Profile-audio documentary/Star Profile-01-Audio Documentary.mp3
结论
通过du命令可以快速到磁盘使用量比较大的文件或者目录,根据文件内容的重要性进行清理,保持服务器磁盘的健康。