我有一台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/home上占用空间的文件夹中的那些文件的名称。由于/是一切的基础,因此它向我显示了服务器的每个文件。

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

评论

请参见-xdev查找谓词。另请参见du -kx / | xdu(或xdiskusage)。

另请参阅我对相关问题的回答。

相关发现。型印刷xargs du -sk |排序-rn

相关:stackoverflow.com/questions/12522269/…

#1 楼

尝试:

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


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

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

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

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


评论


-xdev只是阻止find在文件系统之间移动,因此您只会搜索当前的物理驱动器。如果那不是您想要的,只需删除-xdev arg。

–滚刀
19年1月13日在5:58

我只是想知道。此命令应该在没有sudo的情况下运行吗?如果没有sudo,它会产生很多警告,使输出不可读

–user1762087
20-10-23在13:05



@ user1762087如果没有权限,可以使用sudo。

–cuonglm
20-10-24在2:00

#2 楼

除了@Gnouc answer之外,您还可以添加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


#3 楼

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

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


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

评论


我会提到这种方法很好,因为-h显示了人类可读的输出,并添加了示例输出。

– Ciro Santilli郝海东冠状病六四事件法轮功
19年5月21日在13:32

很好的解决方案。谢谢。

– Tigin
19年8月6日在11:04

如何使du只显示文件而不显示目录?

–阿基尔·贾拉甘(Akhil Jalagam)
20年6月27日在5:43

在Ubuntu 20上像魅惑一样工作。

– Binita Bharati
20/09/21在9:00