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

Abh*_* py 162 find disk-usage

我有一个 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
Run Code Online (Sandbox Code Playgroud)

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

我试过这个:

find . -type d -size +100M
Run Code Online (Sandbox Code Playgroud)

结果如下:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar
Run Code Online (Sandbox Code Playgroud)

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

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

cuo*_*glm 275

尝试:

find / -xdev -type f -size +100M
Run Code Online (Sandbox Code Playgroud)

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

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

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

find / -xdev -type f -size +102400000c
Run Code Online (Sandbox Code Playgroud)

  • `-xdev` 只是阻止 find 遍历文件系统,因此您只会搜索当前的物理驱动器。如果这不是您想要的,只需删除 `-xdev` 参数。 (5认同)

z a*_*tef 56

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

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5
Run Code Online (Sandbox Code Playgroud)

要仅查看 GB 中的文件,请执行以下操作:

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
Run Code Online (Sandbox Code Playgroud)


ken*_*orb 55

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

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50
Run Code Online (Sandbox Code Playgroud)

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

在 BSD 上find使用-x相当于已弃用的-xdev主要版本。

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

du -ahx / | sort -rh | head -20
Run Code Online (Sandbox Code Playgroud)

(该-x标志是限制du到单个文件系统所需的)

如果您不使用 GNU sort(来自coreutils),请在不使用它的情况下使用它-h

du -ax / | sort -rn | head -20
Run Code Online (Sandbox Code Playgroud)

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