寻找一系列命令,这些命令将向我显示驱动器上最大的文件。
寻找一系列命令,这些命令将向我显示驱动器上最大的文件。
Answers:
如果只需要查找大文件,则可以使用find
该-size
选项。下一条命令将列出所有大于10MiB的文件(不要与10MB混淆):
find / -size +10M -ls
如果要查找某个大小的文件,可以将其与“小于大小”搜索结合使用。下一条命令查找10MiB和12MiB之间的文件:
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
列出了一些可用于磁盘使用率分析的程序。一个看起来非常有前途的应用程序是gt5
。
从包装说明中:
几年过去了,磁盘变得越来越大,但是即使在这个令人难以置信的巨大硬盘时代,空间似乎也会随着时间消失。这个小型有效的程序比默认的du(1)提供了更方便的列表。它显示自上次运行以来发生的情况,并显示目录大小和总百分比。通过基于文本的浏览器(链接,elink,lynx等)使用光标键,可以导航和升至目录
在gt5的“相关软件包”部分中,我发现了ncdu
。从其包装说明中:
Ncdu是基于ncurses的du查看器。它通过著名的du实用程序提供了一个快速且易于使用的界面。它允许通过ncurses库浏览目录并显示磁盘使用百分比。
-ls
是硬编码的(请参阅pred_fls
和list_file函数的源代码)。您可以尝试使用-printf
选项近似输出,使用awk对输出进行后处理,或使用类似find ... -type f -exec ls -ldh {} \; | column -t
我只是用的组合du
和sort
。
sudo du -sx /* 2>/dev/null | sort -n
0 /cdrom
0 /initrd.img
0 /lib64
0 /proc
0 /sys
0 /vmlinuz
4 /lost+found
4 /mnt
4 /nonexistent
4 /selinux
8 /export
36 /media
56 /scratchbox
200 /srv
804 /dev
4884 /root
8052 /bin
8600 /tmp
9136 /sbin
11888 /lib32
23100 /etc
66480 /boot
501072 /web
514516 /lib
984492 /opt
3503984 /var
7956192 /usr
74235656 /home
然后是冲洗并重复的情况。定位您认为太大的子目录,为它们运行命令,然后找出导致问题的原因。
注意:我使用du
的-x
标志将内容限制在一个文件系统中(在SSD和RAID5之间,我有很复杂的交叉安装内容安排)。
注意2:2>/dev/null
将所有错误消息重定向到遗忘中。如果他们不打扰您,则不是强制性的。
du
手册页中:“递归总结目录中每个文件的磁盘使用情况。”
我最喜欢的解决方案是结合使用以下几种好的答案。
du -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
参数:
-a
用于“所有”文件和目录。只保留目录-BM
以兆字节(M)块大小(B)输出大小2>/dev/null
-排除“权限被拒绝”错误消息(感谢@Oli)sort
参数:
-n
用于“数字”-r
用于“反向”(从大到小)head
参数:
-n 50
排名前50位的结果。more
如果使用较小的数字,则保留注意:前缀包括sudo
要包含您的帐户无权访问的目录。
该示例显示/ var(包括总计)中排名前10位的最大文件和目录。
cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M .
6794M ./lib
5902M ./lib/mysql
3987M ./lib/mysql/my_database_dir
1825M ./lib/mysql/my_database_dir/a_big_table.ibd
997M ./lib/mysql/my_database_dir/another_big_table.ibd
657M ./log
629M ./log/apache2
587M ./log/apache2/ssl_access.log
273M ./cache
若要显示当前文件夹中最大的前20个目录,请使用以下一种格式:
du -ah . | sort -rh | head -20
或(更多面向Unix):
du -a . | sort -rn | head -20
对于当前目录中前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
请注意,该功能
-h
仅适用于GNUsort
,因此要使其在OSX / BSD上正常运行,必须从安装coreutils
。然后将其文件夹添加到您的中PATH
。
因此,这些别名对于在rc文件中使用很有用(每次需要时):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
试用Baobab,它可以为您提供文件和文件夹的图形概述,您可以查看真实的空间猪,然后单击一下即可将其删除 https://help.ubuntu.com/community/Baobab
您可以在跳过目录的同时使用命令查看最大的文件:
sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10
要查找所有大于100MiB(不是100MB)的文件,如果感到困惑,请参见此处:
find / -size +100M -ls
下面的命令将显示该文件夹中最大的5个文件$DIRECTORY
:
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
使用du
:下面使用du的命令显示home工作文件夹中最大20个目录的目录:
sudo du -a /home | sort -n -r | head -n 20
现在,为了显示最大的目录/文件(包括子文件夹),请运行:
du -Sh | sort -rh | head -n 10
使用ls
:
要列出/ bin目录中5个最大的文件,请发出以下命令:
ls -lSh /bin | head -5