在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在Linux系统中,如何去搜索一些比较大的文件呢?下面我整理了一下在Linux系统中如何查找大文件或文件夹的方法。
1: 如何查找大文件?
[root@linus /]# pwd
/
[root@linus /]# find . -type f -size +800M
./proc/kcore
find: ‘./proc/5334’: 没有那个文件或目录
find: ‘./proc/5335/task/5335/fdinfo/6’: 没有那个文件或目录
find: ‘./proc/5335/fdinfo/5’: 没有那个文件或目录
如上命令所示,我们仅仅能看到超过800M大小的文件的文件名称,但是对文件的信息(例如,文件大小、文件属性)一无所知,那么能否更详细显示一些文件属性或信息呢,当然可以,如下所示
[root@linus /]# find . -type f -size +800M -print0 | xargs -0 ls -l
find: ‘./proc/96718/task/96718/fdinfo/6’: 没有那个文件或目录
find: ‘./proc/96718/fdinfo/5’: 没有那个文件或目录
-r-------- 1 root root 140737486266368 2月 16 17:26 ./proc/kcore
当我们只需要查找超过800M大小文件,并显示查找出来文件的具体大小,可以使用下面命令
[root@linus /]# find . -type f -size +800M -print0 | xargs -0 du -h
如果你还需要对查找结果按照文件大小做一个排序,那么可以使用下面命令
[root@linus /]# find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr
不过如上截图所示,有时候排列的顺序并不完全是按大小一致,这个是因为du命令的参数h所致,你可以统一使用使用MB来显示,这样就能解决这个问题。到这里,这个在Linux系统查找大文件的命令已经非常完美了,当然如果你还有很多的需求,那么可以在这个命令上做修改、调整.
[root@linus /]# find . -type f -size +800M -print0 | xargs -0 du -hm | sort -nr
2: 如何查找Linux下的大目录
譬如有时候磁盘空间告警了,而你平时又疏于管理、监控文件的增长,那么我需要快速的了解哪些目录变得比较大,那么此时我们可以借助du命令来帮我们解决这个问题。
[root@linus /]# du -h --max-depth=1
197M ./boot
4.0K ./dev
36K ./home
du: 无法访问"./proc/97773": 没有那个文件或目录
du: 无法访问"./proc/97774/task/97774/fd/4": 没有那个文件或目录
du: 无法访问"./proc/97774/task/97774/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/97774/fd/3": 没有那个文件或目录
du: 无法访问"./proc/97774/fdinfo/3": 没有那个文件或目录
0 ./proc
12M ./run
0 ./sys
37M ./etc
200M ./root
6.8G ./var
4.0K ./tmp
6.4G ./usr
0 ./media
0 ./mnt
1.5G ./opt
0 ./srv
1.6M ./sh
0 ./sh1
16G .
如果你想知道/opt目录下面有哪些大文件夹,那么可以将参数max-depth=2 ,如果你想对搜索出来的结果进行排序,那么可以借助于sort命令。如下所示
[root@linus /]# du -h --max-depth=2 | sort -n
du: 无法访问"./proc/98230/task/98230/fd/4": 没有那个文件或目录
du: 无法访问"./proc/98230/task/98230/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/98230/fd/3": 没有那个文件或目录
du: 无法访问"./proc/98230/fdinfo/3": 没有那个文件或目录
0 ./proc/913
0 ./proc/914
0 ./proc/915
0 ./proc/917
0 ./proc/918
0 ./proc/919
0 ./proc/920
0 ./proc/921
0 ./proc/922
0 ./proc/94760
0 ./proc/965
0 ./proc/97115
0 ./proc/98150
0 ./proc/98186
0 ./proc/98208
0 ./proc/98209
0 ./proc/98210
0 ./proc/98229
0 ./proc/98230
0 ./proc/98231
0 ./proc/997
0 ./proc/998
0 ./proc/999
0 ./proc/acpi
0 ./proc/asound
0 ./proc/bus
0 ./proc/driver
0 ./proc/fs
0 ./proc/irq
0 ./proc/mpt
0 ./proc/scsi
0 ./proc/sys
0 ./proc/sysvipc
0 ./proc/tty
0 ./root/.pki
0 ./run/console
0 ./run/criu
0 ./run/cryptsetup
0 ./run/dbus
0 ./run/faillock
0 ./run/gitlab
0 ./run/httpd
0 ./run/lock
0 ./run/lvm
0 ./run/mount
0 ./run/netreport
0 ./run/plymouth
0 ./run/sepermit
0 ./run/setrans
0 ./run/sudo
0 ./run/svnserve
0 ./run/user
0 ./run/vmware
0 ./sh1
0 ./srv
0 ./sys
0 ./sys/block
0 ./sys/bus
0 ./sys/class
0 ./sys/dev
0 ./sys/devices
0 ./sys/firmware
0 ./sys/fs
0 ./sys/hypervisor
0 ./sys/kernel
0 ./sys/module
0 ./sys/power
0 ./tmp/.font-unix
0 ./tmp/gitaly-ruby762264615
0 ./tmp/.ICE-unix
0 ./tmp/systemd-private-0bb7c867bd534616a8b14a1ea1fb9ba7-chronyd.service-ITZcIi
0 ./tmp/systemd-private-0bb7c867bd534616a8b14a1ea1fb9ba7-mariadb.service-XGTvhM
0 ./tmp/.Test-unix
0 ./tmp/vmware-root_845-4021653450
0 ./tmp/vmware-root_982-2965972296
0 ./tmp/.X11-unix
0 ./tmp/.XIM-unix
0 ./usr/etc
0 ./usr/games
0 ./var/adm
0 ./var/crash
0 ./var/cvs
0 ./var/empty
0 ./var/games
0 ./var/gopher
0 ./var/kerberos
0 ./var/local
0 ./var/nis
0 ./var/preserve
0 ./var/tmp
0 ./var/yp
1.1G ./usr/bin
1.1G ./usr/lib
1.1M ./etc/pki
1.2G ./opt/gitlab
1.5G ./opt
1.6M ./sh
3.2G ./usr/local
3.4M ./run/udev
4.0K ./boot/grub
4.0K ./dev
4.0K ./dev/shm
4.0K ./etc/alternatives
4.0K ./etc/containerd
4.0K ./etc/cron.hourly
4.0K ./etc/depmod.d
4.0K ./etc/etcd
4.0K ./etc/gdbinit.d
4.0K ./etc/kernel
4.0K ./etc/kubernetes
4.0K ./etc/plymouth
4.0K ./etc/python
4.0K ./etc/rsyslog.d
4.0K ./etc/rwtab.d
4.0K ./etc/sasl2
4.0K ./etc/wpa_supplicant
4.0K ./etc/X11
4.0K ./root/.docker
4.0K ./run/chrony
4.0K ./run/initramfs
4.0K ./run/mariadb
4.0K ./run/tmpfiles.d
4.0K ./run/tuned
4.0K ./tmp
6.1G ./var/lib
6.4G ./usr
6.8G ./var
6.9M ./root/.cache
7.9M ./etc/udev
8.0K ./etc/cron.d
8.0K ./etc/groff
8.0K ./etc/libnl
8.0K ./etc/polkit-1
8.0K ./var/db
8.0M ./boot/grub2
8.0M ./run/log
12K ./etc/audisp
12K ./etc/dhcp
12K ./etc/docker
12K ./etc/mercurial
12K ./etc/modprobe.d
12K ./etc/my.cnf.d
12K ./etc/ntp
12K ./etc/supervisor
12K ./run/NetworkManager
12K ./sh/logs
12M ./run
16G .
16K ./etc/audit
16K ./etc/conntrackd
16K ./etc/containers
16K ./etc/cron.daily
16K ./etc/dconf
16K ./etc/default
16K ./etc/firewalld
16K ./etc/fonts
16K ./etc/NetworkManager
16K ./etc/prelink.conf.d
16K ./etc/rpm
16K ./etc/skel
16K ./etc/tuned
16K ./home/linus
16K ./sh/log
20K ./home/postgres
23M ./etc/selinux
24K ./etc/ld.so.conf.d
26M ./usr/include
28K ./etc/ppp
28K ./etc/yum
32K ./etc/logrotate.d
32K ./etc/xdg
32K ./var/spool
36K ./etc/iproute2
36K ./home
36M ./opt/cni
37M ./etc
40K ./etc/systemd
44K ./etc/php.d
44K ./etc/rc.d
47M ./usr/sbin
60K ./etc/security
60K ./etc/yum.repos.d
60M ./usr/src
68K ./etc/openldap
72K ./etc/grub.d
76K ./etc/profile.d
76M ./var/log
84K ./etc/gitlab
86M ./opt/pgsql
96K ./etc/bash_completion.d
100K ./etc/dbus-1
100K ./etc/httpd
108K ./etc/pam.d
134M ./root/.debug
136K ./etc/lvm
148K ./etc/postfix
153M ./usr/libexec
172K ./run/systemd
190M ./opt/cat
197M ./boot
200M ./root
236M ./var/opt
244K ./etc/vmware-tools
312K ./var/www
337M ./usr/lib64
384K ./etc/sysconfig
384M ./var/cache
532M ./usr/share
572K ./sh/TEST
604K ./etc/ssh
[root@linus /]# du -hm --max-depth=2 | sort -n
du: 无法访问"./proc/98489/task/98489/fd/4": 没有那个文件或目录
du: 无法访问"./proc/98489/task/98489/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/98489/fd/3": 没有那个文件或目录
du: 无法访问"./proc/98489/fdinfo/3": 没有那个文件或目录
1 ./etc/plymouth
1 ./etc/polkit-1
1 ./etc/postfix
1 ./etc/ppp
1 ./etc/prelink.conf.d
1 ./etc/profile.d
1 ./etc/python
1 ./etc/rc.d
1 ./etc/rpm
1 ./etc/rsyslog.d
1 ./etc/rwtab.d
1 ./etc/sasl2
1 ./etc/security
1 ./etc/skel
1 ./etc/ssh
1 ./etc/supervisor
1 ./etc/sysconfig
1 ./etc/systemd
1 ./etc/tuned
1 ./etc/vmware-tools
1 ./etc/wpa_supplicant
1 ./etc/X11
1 ./etc/xdg
1 ./etc/yum
1 ./etc/yum.repos.d
1 ./home
1 ./home/linus
1 ./home/postgres
1 ./root/.docker
1 ./run/chrony
1 ./run/initramfs
1 ./run/mariadb
1 ./run/NetworkManager
1 ./run/systemd
1 ./run/tmpfiles.d
1 ./run/tuned
1 ./sh/log
1 ./sh/logs
1 ./sh/TEST
1 ./tmp
1 ./var/db
1 ./var/spool
1 ./var/www
2 ./etc/pki
2 ./sh
4 ./run/udev
7 ./root/.cache
8 ./boot/grub2
8 ./etc/udev
8 ./run/log
12 ./run
23 ./etc/selinux
26 ./usr/include
36 ./opt/cni
37 ./etc
47 ./usr/sbin
60 ./usr/src
76 ./var/log
86 ./opt/pgsql
134 ./root/.debug
153 ./usr/libexec
190 ./opt/cat
197 ./boot
200 ./root
236 ./var/opt
337 ./usr/lib64
384 ./var/cache
532 ./usr/share
1050 ./usr/bin
1065 ./usr/lib
1193 ./opt/gitlab
1504 ./opt
3261 ./usr/local
6216 ./var/lib
6526 ./usr
6911 ./var
15386 .
有时候搜索出来的结果太多了(譬如,我从根目录开始搜索),一直在刷屏,如果我只想查出最大的12个文件夹,怎么办呢?此时就要借助head命令来显示了
[root@linus /]# du -hm --max-depth=2 | sort -nr | head -12
du: 无法访问"./proc/99664/task/99664/fd/4": 没有那个文件或目录
du: 无法访问"./proc/99664/task/99664/fdinfo/4": 没有那个文件或目录
du: 无法访问"./proc/99664/fd/3": 没有那个文件或目录
du: 无法访问"./proc/99664/fdinfo/3": 没有那个文件或目录
15386 .
6911 ./var
6526 ./usr
6216 ./var/lib
3261 ./usr/local
1504 ./opt
1193 ./opt/gitlab
1065 ./usr/lib
1050 ./usr/bin
532 ./usr/share
384 ./var/cache
337 ./usr/lib64