用于查找最大文件/目录的 Linux 实用程序

Rob*_*anu 133 linux disk-space

我正在寻找一个程序来显示哪些文件/目录占用的空间最多,例如:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other
Run Code Online (Sandbox Code Playgroud)

我知道这在 KDE3 中是可能的,但我宁愿不这样做 - KDE4 或命令行是首选。

Dae*_*yth 200

我总是使用ncdu. 它是交互式的,而且速度非常快。

  • +1000 为 `ncdu` --- 就像磁盘空间的 `htop`。超级好用! (22认同)
  • 我爱ncdu。这是我最喜欢的谷歌发现之一。 (5认同)
  • 哇。我怎么不知道这个存在。谢谢! (5认同)

Sea*_*ean 130

查找最大的 10 个文件 (linux/bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

要查找最大的 10 个目录:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

唯一的区别是-type {d:f}

处理名称中带有空格的文件,并在输出中生成人类可读的文件大小。最后列出的最大文件。tail 的参数是您看到的结果数(这里是最大的 10 个)。

有两种技术用于处理文件名中的空格。在find -print0 | xargs -0使用null作为分隔符代替空格,第二个xargs -I{}用途换行,而不是空格终止输入项目。

例子:

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
Run Code Online (Sandbox Code Playgroud)


mas*_*mas 37

快速查看:

du | sort -n
Run Code Online (Sandbox Code Playgroud)

列出最后一个最大的所有目录。

du --max-depth=1 * | sort -n
Run Code Online (Sandbox Code Playgroud)

或者,再次避免多余的 * :

du --max-depth=1 | sort -n
Run Code Online (Sandbox Code Playgroud)

列出当前目录中的所有目录,最后一个最大。

(需要 -n 参数进行排序,以便第一个字段按数字而不是文本进行排序,但这排除了使用 -h 参数对 du 进行排序,因为我们需要一个重要的数字进行排序)

例如,如果您想跟随符号链接(默认是不跟随符号链接)或仅显示不包括子目录的目录内容的大小,则可以使用 du 的其他参数。du 甚至可以在列表中包含上次更改目录中任何文件的日期和时间。

  • * 真的有必要吗?默认情况下不是包含当前目录中的所有文件吗? (3认同)

Ant*_*nko 23

大多数情况下,我更喜欢 CLI 工具,但对于驱动器的使用,我真的很喜欢filelight。该演示文稿对我来说比我见过的任何其他空间管理工具都更直观。

文件灯截图


Nic*_*oul 20

Filelight 更适合 KDE 用户,但为了完整性(问题标题很笼统)我必须提到Baobab包含在 Ubuntu 中,又名磁盘使用分析器:

在此处输入图片说明


Jon*_*nik 8

GUI 工具KDirStat以表格和图形方式显示数据。您可以非常快速地看到大部分空间的使用位置。

在此处输入图片说明

我不确定这是否正是您不想要的 KDE 工具,但我认为在这样的问题中仍然应该提到它。这很好,但很多人可能不知道——我最近才了解到它。

  • Kdirstat 太慢了。改用`ncdu`。 (4认同)

nik*_*nik 5

组合始终是 Unix 上最好的技巧。

du -sk $(find . -type d) | sort -n -k 1
Run Code Online (Sandbox Code Playgroud)

将以 KB 为单位显示目录大小并排序以在最后给出最大的。
然而,树视图需要更多的功能......真的需要吗?

请注意,此扫描是跨目录嵌套的,因此它将再次计算更高目录的子目录,并且基目录.将在最后显示为总利用率总和。

但是,您可以在 find 上使用深度控件以在特定深度进行搜索。
而且,实际上更多地参与您的扫描......取决于您想要什么。findwith-maxdepth和 的深度控制-mindepth可以限制到特定的子目录深度。


这是针对您的 arg-to-long 问题的改进变体

find . -type d -exec du -sk {} \; |  sort -n -k 1
Run Code Online (Sandbox Code Playgroud)