如何找出最占硬盘空间的10个目录或文件

方法1

bash -c 'du -ah / | sort -hr | head -n 10' 2>/dev/null

du -ah / 2>/dev/null | sort -hr | head -n 10

方法2

bash -c 'find / -print0 | xargs -0 du -h | sort -hr | uniq | head -n 10' 2>/dev/null

方法3

bash -c 'find / -exec du -h {} + | sort -hr | uniq | head -n 10' 2>/dev/null

Linux 如何找出最占硬盘空间的10个目录或文件

找出最占硬盘空间的10个目录或文件的三个方法

如何找出最占硬盘空间的10个目录

方法1

bash -c 'du -h / | sort -hr | head -n 10' 2>/dev/null

方法2

bash -c 'find / -type d -print0 | xargs -0 du -h | sort -hr | uniq | head -n 10' 2>/dev/null

方法3

bash -c 'find / -type d -exec du -h {} + | sort -hr | uniq | head -n 10' 2>/dev/null

Linux 如何找出最占硬盘空间的10个目录或文件

找出最占硬盘空间的10个目录的三个方法

如何找出最占硬盘空间的10个文件

方法1

bash -c 'find / -type f -print0 | xargs -0 du -h | sort -hr | head -n 10' 2>/dev/null

bash -c 'find / -type f -size +90M -print0 | xargs -0 du -h | sort -hr | head -n 10' 2>/dev/null

方法2

bash -c 'find / -type f -exec du -h {} + | sort -hr | head -n 10' 2>/dev/null

bash -c 'find / -type f -size +90M -exec du -h {} + | sort -hr | head -n 10' 2>/dev/null

Linux 如何找出最占硬盘空间的10个目录或文件

找出最占硬盘空间的10个文件的两个方法

du命令的使用场景

估算某个目录、该目录下的所有子目录各自占用多少硬盘空间(不含该目录下的子文件)

# 不加-a,说明只估算所有子目录,不估算所有子文件
bash -c 'du -h / | sort -hr | head -n 50' 2>/dev/null

估算某个目录、该目录下的所有子目录、该目录下的所有子文件各自占用多少硬盘空间

# 加了-a,说明除了估算所有子目录之外,还要估算所有子文件
bash -c 'du -ah / | sort -hr | head -n 50' 2>/dev/null

估算一个目录占用多少硬盘空间(不含该目录下的所有子目录和子文件)

root@hgdm:~# du -sh / 2>/dev/null
8.5G	/

估算一个目录下的所有一级子目录、所有一级子文件各自占用多少硬盘空间

root@hgdm:~# du -sh /* 2>/dev/null | sort -hr
4.0G	/var
3.0G	/usr
948M	/swapfile
381M	/data
138M	/boot
104M	/root
6.5M	/etc
2.6M	/home
692K	/run
64K	/tmp
16K	/lost+found
12K	/media
4.0K	/srv
4.0K	/opt
4.0K	/mnt
0	/sys
0	/sbin
0	/proc
0	/libx32
0	/lib64
0	/lib32
0	/lib
0	/dev
0	/bin

估算一个文件占用多少硬盘空间

root@hgdm:~# du -h /var/log/nginx/access.log
48K	/var/log/nginx/access.log

估算多个文件各自占用多少硬盘空间

root@hgdm:~# du -h /var/log/nginx/access.log /root/examples/data111.txt
48K	/var/log/nginx/access.log
4.0K	/root/examples/data111.txt

du命令的常用命令选项

  • -a: 加-a则输出结果=某个目录 + 子目录 + 子文件(含子文件),不加-a则输出结果 = 某个目录 + 子目录(不含子文件)。
  • -s: 英文单词是summary或simple,意思是,加-s则输出结果既不含子目录也不含子文件。
  • -h: 英文单词是human-readable,指以人类可读的方式输出结果,单位为T、G、M、K。

需要注意的问题1

当使用du -sh命令估算两个或两个以上的目录的空间使用情况时,当这些待估算目录存在隶属关系或父子关系时,不会得到想到的结果。

示例命令执行结果如下:

root@hgdm:~# du -sh /var /etc
4.0G    /var
6.5M    /etc

root@hgdm:~# du -sh /var /var/lib/mysql
4.0G    /var

root@hgdm:~# du -sh /var/lib/mysql /var
2.6G	/var/lib/mysql
1.4G	/var

Linux 如何找出最占硬盘空间的10个目录或文件

执行du -sh命令有时会得不到想要的结果

需要注意的问题2

以下两个命令得到的结果是不相同的

bash -c 'du -sh /* | sort -hr | head -n 10' 2>/dev/null

bash -c 'du -sh /* | sort -nr | head -n 10' 2>/dev/null

命令执行详情

root@hgdm:~# bash -c 'du -sh /* | sort -hr | head -n 10' 2>/dev/null
3.9G    /var
3.0G    /usr
948M    /swapfile
381M    /data
138M    /boot
104M    /root
6.5M    /etc
2.6M    /home
692K    /run
64K /tmp
root@hgdm:~# bash -c 'du -sh /* | sort -nr | head -n 10' 2>/dev/null    (通过眼睛就可以发现,没找到最占硬盘空间的3.9G目录)
948M    /swapfile
692K    /run
381M    /data
138M    /boot
104M    /root
64K /tmp
16K /lost+found
12K /media
6.5M    /etc
4.0K    /srv
Linux 如何找出最占硬盘空间的10个目录或文件

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注