使用什么命令行方式可以查找要删除并释放空间的大文件/目录?

使用什么命令行方式可以查找要删除并释放空间的大文件/目录?

寻找一系列可以显示驱动器上最大文件的命令。

答案1

如果您只需要查找大文件,可以使用find-size选项。下一个命令将列出所有大于 10MiB 的文件(不要与 10MB 混淆):

find / -size +10M -ls

如果要查找介于特定大小之间的文件,可以将其与“小于”搜索结合使用。下一个命令查找介于 10MiB 和 12MiB 之间的文件:

find / -size +10M -size -12M -ls

apt-cache search 'disk usage'列出了一些可用于磁盘使用情况分析的程序。其中一个看起来很有前途的应用程序是gt5

从包装描述来看:

多年来,磁盘变得越来越大,但即使在这个令人难以置信的巨大硬盘时代,空间似乎也会随着时间的推移而消失。这个小而有效的程序提供了比默认的 du(1) 更方便的列表。它显示自上次运行以来发生的情况,并显示目录大小和总百分比。可以使用基于文本的浏览器(links、elinks、lynx 等)使用光标键导航和上升到目录。

gt5截图

在“相关软件包”部分GT5,我发现了ncdu。从其包装描述来看:

Ncdu 是一个基于 ncurses 的 du 查看器。它通过著名的 du 实用程序提供快速且易于使用的界面。它允许浏览目录并使用 ncurses 库显示磁盘使用率百分比。

ncdu 的截图

答案2

我最喜欢的解决方案是结合这些好的答案。

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

答案3

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将所有错误消息重定向到遗忘位置。如果它们不打扰您,则这不是必须的。

答案4

qbi 的答案是正确的,但是当文件很多时它会非常慢,因为它会为每个项目启动一个新的 ls 进程。

使用 find 而不产生子进程的更快版本是使用 printf 打印字节大小(%s)和路径(%p)

find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries

相关内容