我正在寻找一个程序来显示哪些文件/目录占用的空间最多,例如:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
我知道在KDE3中可能,但我不想这样做-首选KDE4或命令行。
#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'
评论
对于Mac用户,我只想推荐这个名为Disk Inventory X的免费软件。在此处下载它derlien.com对于Mac osx来说很容易使用