在根文件系统中查找所有大文件


124

我有一台linux服务器,当前具有以下空间使用量:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

如你看到的。/是78%。我想检查哪些文件或文件夹正在占用空间。

我尝试了这个:

find . -type d -size +100M

结果显示如下:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

现在这是我的问题。我只想要位于/而不是/u01或的占用空间的文件夹中那些文件的名称/home。由于/这是一切的基础,因此它向我显示了服务器的每个文件。

是否有可能获得占78%的份额的大文件/


3
请参阅-xdev查找谓词。另请参阅du -kx / | xdu(或xdiskusage)。
斯特凡Chazelas


1
相关find . -type f -print | xargs du -sk | sort -rn
user13107 2014年

Answers:


216

尝试:

find / -xdev -type f -size +100M

它列出了所有大小大于100M的文件。

如果您想了解目录,可以尝试ncdu

如果您未运行Linux,则可能需要使用-size +204800-size +104857600c,因为M后缀表示兆字节不在POSIX中。

find / -xdev -type f -size +102400000c

1
-xdev只是防止find在文件系统间穿行,因此您只会搜索当前的物理驱动器。如果那不是您想要的,只需删除-xdevarg。
滚刀

49

除了@Gnouc答案,您还可以添加ls -la以获取更多详细信息。您应该这样sudo privileges做。

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

要仅查看千兆字节中的文件,请执行以下操作:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

以下命令不仅可以找到文件系统中前50个最大的文件(> 100M),而且还可以sort按最大的文件排序(GNU ):

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev 不要降级其他文件系统上的目录。

在BSD上find使用-x,它等效于已弃用的-xdev主数据库。

对于所有文件和目录,它甚至更加容易:

du -ahx / | sort -rh | head -20

(该-x标志是约束du到单个文件系统所需要的)

如果您不使用GNU sort(来自coreutils),则不使用它-h

du -ax / | sort -rn | head -20

仅对于当前目录(为了更快的结果),请替换/.


1
我会提到这种方法很好,因为它-h显示了人类可读的输出,并添加了示例输出。
Ciro Santilli新疆改造中心法轮功六四事件

很好的解决方案。谢谢。
Tigin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.