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

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other


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

评论

对于Mac用户,我只想推荐这个名为Disk Inventory X的免费软件。在此处下载它derlien.com对于Mac osx来说很容易使用

#1 楼

要查找最大的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 {}
< br唯一的区别是-type {d:f}

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

有两种技术用于处理文件名中的空格。 find -print0 | xargs -0使用空定界符代替空格,第二个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


评论


列出的最大文件:查找。型f -print0 | xargs -0 du |排序-nr |头-10 |切-f2 | xargs -I {} du -sh {}(即使用sort -nr | head -10代替sort -n | tail -10)

–桑德拉·罗西(Sandra Rossi)
19年3月13日在20:47

#2 楼

我总是使用ncdu。它是交互式的,非常快。

评论


是的,它很小!

–卢克·斯坦利(Luke Stanley)
2011年7月18日在0:40

我爱ncdu。这是我最喜欢的google发现的内容之一。

–Rob
2012年7月24日在18:33

哇。我怎么不知道这个存在。谢谢!

–像素
2012年9月11日在21:57

ncdu +1000 ---就像htop的磁盘空间一样。超级有用!

–诺亚·萨斯曼(Noah Sussman)
13年6月26日在1:27

由于似乎没有标志,也没有.config选项,因此,如果您希望查看文件和文件夹的混合以及相对百分比统计信息,可以在每次运行它时键入以下键序列:[t] [g] [g] 。

– rymo
13年10月10日在21:36

#3 楼

快速查看:

du | sort -n


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

du --max-depth=1 * | sort -n


或再次,避免冗余*:

du --max-depth=1 | sort -n


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

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

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

评论


*确实是必需的。默认情况下,它是否不包括当前目录中的所有文件?

–乔什·亨特(Josh Hunt)
09年7月21日在17:02

不,*应该是多余的。我不确定使用它是好习惯还是坏习惯的标志。感谢您指出。我修改了答案以将其反映为可选。

–mas
09年7月22日在9:16

很好,但是结果不是很友好。我通常会这样处理:找到{/ path / to / directory} -type f -size + {file-size-in-kb} k -exec ls -lh {} \; | awk'{print $ 8“:” $ 5}'

–deed02392
2012年3月6日在20:02

罗马#du --max-depth = 1 | sort -n du:非法选项--用法:du [-A] [-H | -L | -P] [-a | -s | -d深度] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I掩码] [文件...]

–霍姆斯
2012年4月6日的16:00

du -h --max-depth = 1 2> / dev / null |排序-nr | grep -v ^ 0-有点整洁

–Stuart Cardall
16年12月24日17:00

#4 楼

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



评论


Filelight是我选择的节省空间的工具。

– Ryan C. Thompson
09年9月11日在8:07

很好的应用程序。 +1

–rpax
2014年7月1日在17:43

在视觉上,这在艺术上很有趣,但是直观吗?单看它,我不知道它代表什么。有人可以解释吗?我去了网站,没有任何解释。

– G-Man说“恢复莫妮卡”
15年8月7日在22:59

Mac上类似的工具是DaisyDisk,可在daisydiskapp.com上获得

–computingfreak
16 Jul 3'at 0:38



#5 楼

Filelight对于KDE用户而言更好,但出于完整性考虑(问题标题是一般性的),我必须提到,Ubuntu中包含了Baobab,又名Disk Usage Analyzer:



评论


如果您正在Mac平台上寻找与之等效的产品,请签出DaisyDisk。

–computingfreak
16年7月3日,0:40

#6 楼

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



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

评论


感谢你的回答。它与我在KDE3中使用的工具完全相同,但是我移到了KDE 4。

– Robert Munteanu
09年7月22日在11:20

您确定不能为KDE4获取kdirstat吗?

– Jonik
09年7月22日在11:44

Kdirstat太慢了。请改用ncdu。

–丹妮丝
2010年7月7日在15:31

我只是按ctrl + f来找到ncdu,发现我已经对@Daenyth进行了投票

–Rob
13年2月18日在5:06

在KDE上,它简称为k4dirstat。

– phihag
2014年2月26日14:07



#7 楼

在Unix上,组合永远是最好的技巧。

du -sk $(find . -type d) | sort -n -k 1


将显示目录大小(KB),并排序以给出最大的目录大小。
树状视图

请注意,此扫描是嵌套在目录中的,因此它将对较高目录和基本目录再次计数子目录.将在最后显示为总利用率。

但是,您可以在查找结果上使用深度控件来搜索特定深度。
然后,根据您的实际需要,更多地参与到扫描中...
find-maxdepth进行-mindepth的深度控制可以限制到特定的子目录深度。


这里是您的arg太长问题的改进版本

find . -type d -exec du -sk {} \; |  sort -n -k 1


评论


我尝试了一下,然后得到很多“ du:任务:没有这样的文件或目录”

–乔什·亨特(Josh Hunt)
09年7月21日在7:12

感谢你的回答。不幸的是,我得到bash:/ usr / bin / du:参数列表太长

– Robert Munteanu
09年7月21日在7:21

#8 楼

我喜欢gt5。您可以导航树并打开子目录以进行向下钻取以获取更多详细信息。它使用文本模式的Web浏览器(例如lynx)来显示结果。安装elink以获得最佳效果。



#9 楼

尽管它没有像这样的嵌套输出,请尝试du

du -h /path/to/dir/


在我的Documents文件夹上运行该命令会显示以下内容:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]


然后您可以将输出通过管道输送到sort

du /path/to/dir | sort -n


评论


谢谢,但是它不能正确显示哪个目录最大。如果我在主目录中启动它,则输出将不可用。

– Robert Munteanu
09年7月21日在7:02

#10 楼

这是为您自动执行的脚本。

http://www.thegeekscope.com/linux-script-to-find-largest-files/

是该脚本的示例输出:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***


您可能会发现此脚本非常方便和有用!

评论


虽然链接的网站确实提供了说明,但您最好改述然后引用外部网站(无论如何,它看起来像个人博客)。这将防止链接腐烂并帮助该站点上的更多人

–加拿大卢克
2012年9月6日下午7:58

链接坏了吗?

–丹尼尔(Danijel)
15年12月24日在13:15

#11 楼

尽管找到每个文件/目录的磁盘使用百分比是有益的,但是大多数时候知道磁盘中最大的文件/目录就足够了。

所以我最喜欢的是:

# du -a | sort -n -r | head -n 20


输出是这样的:

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql


#12 楼

要在当前目录及其子目录中找到前25个文件:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

将通过“ sort -nr -k5“管道命令。

#13 楼

另一个替代方法是agedu,它可以通过最后访问时间来分解磁盘空间,从而使查找空间浪费的文件变得更加容易。

它甚至可以在没有X Windows的服务器上通过提供临时网页来工作,因此使用可以通过图形进行远程分析。假设服务器的IP地址为192.168.1.101,则可以在服务器的命令行上键入此命令。

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R


这将打印用户名,密码和URL,您可以访问“ GUI”并浏览结果。完成后,在服务器上用agedu终止Ctrl+D

#14 楼

du -chs /*


将显示根目录列表。

#15 楼

为了使列表更完整一些,我添加了我最喜欢的磁盘使用情况分析器,即xdiskusage

GUI记得我还有其他一些不错的X实用程序,它既快速又不blo肿,但是您仍然可以轻松地在层次结构中导航并具有一些显示选项:

$ xdiskusage /usr




#16 楼

尝试以下单行代码(显示当前目录中前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



要在OSX / BSD上正常运行的第二条命令(由于sort没有-h),您需要从sort安装coreutils


因此,这些别名对于在rc文件中有用(每次需要时都是有用的):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'