我正在寻找一个程序来显示哪些文件/目录占用了最多的空间,例如:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
我知道在KDE3中是可能的,但我宁愿不要这样做-首选KDE4或命令行。
我正在寻找一个程序来显示哪些文件/目录占用了最多的空间,例如:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
我知道在KDE3中是可能的,但我宁愿不要这样做-首选KDE4或命令行。
Answers:
要查找最大的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
find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}
即,使用sort -nr | head -10
代替sort -n | tail -10
)
快速浏览:
du | sort -n
列出最后一个最大的所有目录。
du --max-depth=1 * | sort -n
或者再次避免多余的*:
du --max-depth=1 | sort -n
列出当前目录中最后一个最大的所有目录。
(需要使用-n参数进行排序,以便第一个字段按数字而不是文本进行排序,但这排除了使用-h参数对du进行排序,因为我们需要有效的数字进行排序)
例如,如果要跟随符号链接(默认不跟随符号链接)或仅显示目录内容的大小(不包括子目录),则du的其他参数可用。du甚至可以在列表中包含上次更改目录中任何文件的日期和时间。
find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0
-有点
对于大多数事情,我更喜欢CLI工具,但是对于驱动器的使用,我真的很喜欢filelight。与我见过的任何其他空间管理工具相比,该演示文稿对我来说都更直观。
Filelight对于KDE用户来说更好,但是为了完整性(问题标题是一般性的),我必须提到Baobab包含在Ubuntu中,又名Disk Usage Analyzer:
GUI工具KDirStat可以表形式和图形形式显示数据。您可以很快地看到大部分空间被使用的地方。
我不确定这是否正是您不想要的KDE工具,但我认为仍然应该在这样的问题中提及它。很好,很多人可能都不知道-我最近才才了解这一点。
ncdu
代替。
在Unix上,组合永远是最好的技巧。
du -sk $(find . -type d) | sort -n -k 1
将以KB为单位显示目录大小,并在最后排序以给出最大的目录大小。
但是,树视图还需要更多...真的需要吗?
请注意,此扫描是嵌套在目录之间的,因此它将对较高目录的子目录再次计数,并且基本目录.
最终将显示为总利用率之和。
但是,您可以在查找结果上使用深度控件以特定深度进行搜索。
而且,实际上取决于您的扫描,更多地涉及到扫描。深度控制find
与-maxdepth
并-mindepth
可以限制到特定的子目录深度。
这是您的arg-to-long问题的精确变体
find . -type d -exec du -sk {} \; | sort -n -k 1
尽管它没有像这样的嵌套输出,请尝试 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
这是自动为您执行的脚本。
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% ***
您可能会发现此脚本非常方便且有用!
尽管找到每个文件/目录的磁盘使用百分比是有益的,但是大多数时候了解磁盘中最大的文件/目录就足够了。
所以我最喜欢的是:
# 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
为了使列表更加完整,我添加了我最喜欢的磁盘使用情况分析器xdiskusage
。
GUI使我想起了其他一些出色的X实用程序,它非常快捷,而且不会肿,但是您仍然可以轻松地在层次结构中导航并具有一些显示选项:
$ xdiskusage /usr
尝试以下单行代码(在当前目录中显示前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'