查找占用最多磁盘空间的文件


43

是否可以列出硬盘上最大的文件?我经常使用它df -H来显示磁盘使用情况,但这仅给出了已满百分比,剩余GB等。

我进行了大量的数据密集型计算,其中包含大量的小文件和少量的非常大的文件。由于我使用的大部分磁盘空间都位于很少的文件中,因此很难跟踪这些大文件的位置。删除1 kB文件不会释放太多空间,但是删除100 GB文件却可以释放空间。有什么方法可以按照大小对硬盘上的文件进行排序吗?

谢谢。


Answers:


47

使用标准可用工具:

要列出当前目录中前十大文件: du . | sort -nr | head -n10

要列出当前目录中最大的目录: du -s * | sort -nr | head -n10

更新这些天,我通常使用一种更具可读性的格式(正如Jay Chakra在另一个答案中解释的那样,并保留| head -n10,只需将其滚动出屏幕即可。最后一行包含最大的文件或目录(树)。

有时,例如。当您在当前目录中有很多挂载点时,而不是使用-x或Multiple --exclude=PATTERN,则将文件系统挂载在未使用的挂载点(通常是 /mnt)上并从那里开始工作比较方便。

请注意,在使用大(NFS)卷时,du在许多(子)目录上运行时,可能会给存储后端(filer)造成很大的负担。在这种情况下,最好考虑设置quota音量。


3
对于您的第一个选择,您能否仅将它们列出ls -Sl | head
Bernhard

否,du遍历整个目录树,而ls -S仅检查当前目录。
jippie 2012年

35

添加到吉普的答案

要以人类可读的格式列出当前目录中最大的目录:

du -sh * | sort -hr | head -n10

样品:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

它使阅读更加方便:)


14

尝试一下ncdu,因为它可以概述磁盘使用情况。从其网站:

具有ncurses界面的磁盘使用情况分析器,旨在在没有完整间隙设置的远程服务器上运行,但必须使用简单的SSH连接。ncdu旨在快速,简单和易于使用,并且应该能够在安装了ncurses的任何最小的POSIX类似环境中运行。


3

(牛羚)

du -max /dir | sort -n将显示大文件以及大目录,可用于标识需要在何处进行一些清理。

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(我知道那是一棵很老的树:p)


2

有一种简单有效的方法来查找Ubuntu中每个文件和目录的大小:

应用程序>配件>磁盘使用分析器

在此窗口中,单击工具栏上的“扫描文件系统”按钮。短时间(秒)后,您将了解每个目录和文件的磁盘使用情况。



0

您可以尝试使用此命令,它将列出所有大于20Mb的文件。

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2

3
如果文件系统上最大的文件为20MB,则磁盘空间可能不会不足。至少有任何高清成就了这一千年
Kevin

这只是一个示例,您可以在其中放置任何内容。它会发现所有大于20MB的文件,而不仅仅是20MB的文件。
patseb 2012年

ls -lh然后sort?? ls -s或者stat -c %b可能更好。
Mikel

我不明白 我的示例使用ls和sort。他想在整个磁盘而不是目录中查找文件。
patseb 2012年

0

键入以下命令

cd /

然后输入

du -sh * | grep G

上面的命令显示了哪个目录使用了多少内存。之后,您必须确定要删除的目录或文件


-2

您可以尝试使用此命令,它将列出较大的文件:

ls -lrS | tail -1

显示当前目录,而不是整个硬盘。
slm

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.