Categories: Shell编程

查找Linux中占用磁盘空间最多的文件和目录

对于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命令可以快速到磁盘使用量比较大的文件或者目录,根据文件内容的重要性进行清理,保持服务器磁盘的健康。

5.0
02
Nginx配置Basic Auth登录认证
shell脚本是什么
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

Linux中你必须知道的5个压缩命令

Linux系统具有丰富的包和解…

11小时 ago

Shell脚本定时执行的三种方法

Shell脚本是Unix和Li…

11小时 ago

Linux中你必须知道的5个解压缩命令

Linux操作系统中有许多强大…

11小时 ago

Golang如何实现三元表达式?

三元表达式又被称为条件表达式,…

12小时 ago

还不知道Unix和Linux有哪些不同?

随着技术的进步和全球范围内的数…

17小时 ago

Reality Defender一款抵御深度伪造威胁的工具

在数字欺诈猖獗的时代,Real…

17小时 ago