【df/du/sort】linux获取文件大小
Contents
df 和 du 两者区别
1、df—disk free
获取磁盘被占用了多少空间,目前可用容量。
2、du—disk usage
统计 目录(或文件) 所占磁盘空间的大小。
3、df 和 du 的不同点:
(1)统计的范围不同
- `df 是从总体上统计系统各磁盘的占用情况,不能统计文件的大小。`
- `du 既可以从总体上统计,又可以统计具体的某个文件夹或文件的大小。`
(2)计算方式不同,计算速度不同
- `df 通过文件系统来快速获取空间大小的信息,速度快,效率高`
- `du 通过逐级进入指定目录的每一个子目录,逐个计算每个文件大小并相加,最终显示出来。`
`所以计算速度慢,某些文件/夹没有访问权限时,无法进行计算。`
(3)计算结果的差异
- `df 可以获取已经删除的文件。`
- `由于df是通过文件系统来获取空间大小的,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,`
- `当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件。`
- `du 只能看到当前存在的、没有被删除的文件。`
- `他计算的大小就是当前他认为存在的所有文件大小的累加和。`
- `当文件系统也确定删除了该文件后,这时候du与df 的结果就一致了。`
二、df 命令
1、df -h
(-h参数使结果以K,M,G为单位,提高信息的可读性)
- `[xxx/]$ df -h`
默认显示系统所有的磁盘情况,此图中显示当前一共有两个硬盘分区,及各自的占用情况。
2、df -h 分区名
`该命令可以指定显示某个分区的占用情况,用的比较少`
当使用 df -h 命令看到磁盘占用较高时,需要使用 du 命令进一步查看哪些文件较大,进而删除。
**三、du 命令
** 1、du -sh
- `(-h 参数同样是为了提高可读性,-s 代表summary,只显示总大小)`
- `[xxx]$ du -sh`
- `6.4G`
默认显示当前目录下所有文件和文件夹的总大小。
当目录下文件夹特别多时,记得不要去掉-s参数,不然会把所有文件夹下的所有文件分别列出来。
2、du -sh 目录名
du -sh 在不指定目录的情况下,默认会显示当前目录下的所有子目录的总大小。
du -sh 目录名 在指定目录的情况下,会显示指定目录下的所有文件或文件夹的大小。
- `du -sh * # 显示当前目录下的所有文件和文件夹大小`
- `du -sh / # 显示根目录下所有的文件和文件夹大小`
- `du -sh /opt # 显示/opt目录下所有的文件和文件夹大小`
3、du 和 sort 结合对文件排序
- `# 查看/opt目录下的所有文件和文件夹大小,并从大到小排序`
- `du -sh /opt | sort -nr`
- `注意!因为du -sh展示的结果单位不同,但是sort排序只能针对数字。`
- `# 查看/opt目录下的所有文件和文件夹大小,找出所有GB大小的文件,并从大到小排序`
- `du -sh /opt | grep G | sort -nr`
- `进入子目录查看子文件
- `du -h /data | grep G | sort -nr`