Linux 命令行查看当前目录的总大小/总磁盘空间/磁盘清理

一、du 查看目录空间大小

(一) du 命令解析

在Linux命令行可以使用 du 命令来查看当前目录的总大小。du 是 disk usage 的缩写,表示磁盘使用情况。

命令解释:总结每个文件的磁盘使用情况,递归地用于目录。

使用格式:

du [OPTION]... [FILE]...

常用选项[OPTION]:

-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小。

-h :以人们较易读的容量格式 (G/M) 显示;

-s :列出总量而已,而不列出每个目录占用容量;

-S :不包括子目录下的总计,与 -s 有点差别。

-k :以 KBytes 列出容量显示;

-m :以 MBytes 列出容量显示;

-d(--max-depth=N):查看当前目录使用的总空间大小。N表示深度,为0表示列出当前目录的总大小,为1表示列表当前目录及各个子目录的总大小,为2则更深一级的目录。

--apparent-size:显示目录或文件自身的大小。

-l :统计硬链接占用磁盘空间的大小。

-L:统计符号链接所指向的文件占用的磁盘空间大小。

默认情况下,du不显示目录下文件占用磁盘空间的信息,但它会显示其下子目录占用磁盘空间的信息;而使用-s选项以后,只显示xx目录占用磁盘空间的大小。

(二)du 命令查看目录总大小

du -sh

列出当前目录总大小,而不列出各个文件的大小。以人们较易读的容量格式 (G/M) 显示;

运行结果如下:

另外,du -sh还可以查看指定目录或文件的总大小:

复制代码
du -sh /home/samba/00_thirdLib/

du -sh ./a.out sscanf.c

du --apparent-size:显示文件或目录自身大小,而不是它们占用的磁盘空间大小。文件或目录占用磁盘空间的大小与它们自身大小有时候并非完全一致;这种现象非linux所独有,windows里也是如此。

  • du -c:使用此选项时,不仅显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和。

    [root@oms ~]# du -csh /opt/software /var/log
    31G /opt/software
    224M /var/log
    32G total

  • du命令还可以对结果进行排序,以方便快速找出占用空间最多目录。

    du -s 目录 | sort -rn #这是按字节排序
    du -sh 目录 | sort -rn #这是按兆(M)来排序
    #由于-sh大小显示看起来是乱的,因此建议使用du -s|sort -nr

    du -s 目录 | sort -rn | head #选出排在前面的10个
    du -s 目录 | sort -rn | tail #选出排在后面的10个

(三)du 命令查看目录指定层级的大小

-d 或 --max-depth=N可以指定du命令查看哪个目录层级的总大小。

-d0 或 --max-depth=0 表示查看当前目录的大小;

-d1 或 --max-depth=1 表示查看当前目录的大小,及当前目录各个子目录的大小;

-d2 或 --max-depth=2 表示查看当前目录的大小,及当前目录各个子目录的大小,以及子目录的子目录大小;

看例子演示:

(四)du 命令查看除了子目录之外的总大小

du 命令使用 -S 选项可以查看当前目录下除了子目录之外的所有文件的大小,下面命令显示当前除了子目录之外整个目录大小:

du -Sh

还可以查看指定目录,命令如下:

du -Sh 01_fileOpe/

下图是先查看01_fileOpe的大小是496K,然后使用-S查看除了子目录外的大小是 492K :

二 、df 查看挂载磁盘空间大小

df命令查看文件系统的磁盘使用情况和空间大小。默认情况下,df会显示所有已挂载文件系统的磁盘使用量

基本命令格式如下:

df

如果你想看到人类可读的格式(例如,以MB,GB来表示),可以加上-h参数:

df -h

如果你只对特定的文件系统感兴趣,可以指定其挂载点或设备名,例如:

df -h /dev/sda1

df可以查看一级文件夹大小、使用比例、档案系统及其挂入点。

复制代码
[root@oms ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       40G   35G  3.1G  92% /
devtmpfs       devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs     1.9G  191M  1.7G  11% /run
tmpfs          tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs          tmpfs     379M     0  379M   0% /run/user/0

-T:可以用来查看分区的文件系统。

-h:表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。

上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到 /dev/vda1 这个分割区被挂在根目录下。

接下来的四个字段 Size、Used、Avail、及 Use% 分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比。 FreeBSD下,当硬盘容量已满时,您可能会看到已使用的百分比超过 100%,因为 FreeBSD 会留一些空间给 root,让 root 在档案系统满时,还是可以写东西到该档案系统中,以进行管理。

三 rm清理磁盘

linux下删除指定文件、文件夹:rm

一、Linux下删除文件和文件夹常用命令如下:

删除文件: rm file1 file2

删除文件夹: rm -rf dir

注意:rmdir 只能够删除 空文件夹。

二、删除指定文件(夹)之外的所有文件

需要在当前文件夹中进行:

复制代码
#删除keep文件之外的所有文件
rm -rf !(folder)

#删除folder1和folder2文件之外的所有文件
rm -rf !(folder1 | folder2) 

删除超过一个月时间的日志文件:

复制代码
#删除,文件名中带有数字,超过30天的日志:
find -mtime +30 -name "*[0-9]*" -exec rm {} \;

注:可以根据名称规则过滤。

三、实践:删除除debug.log 和sys.out 文件外的所有文件。

复制代码
#建立查找规则
 vi test.txt 

^debug.log$
^sys.out$

#尝试查找:
ls | grep -f test.txt 
debug.log
sys.out

#删除要保留文件外的其它文件:
ls | grep -vf test.txt |xargs rm
#记得加v,保留要保留的文件,不要删错了
相关推荐
Bug退退退1231 分钟前
RabbitMQ 高级特性之消息确认
java·分布式·rabbitmq
笑衬人心。2 分钟前
项目中数据库表设计规范与实践(含案例)
服务器·数据库·设计规范
云动雨颤35 分钟前
Java并发性能优化|读写锁与互斥锁解析
java
小张不嚣张꒰ঌ(˚ᆺ˚)໒꒱1 小时前
Centos7在yum当中遇到Could not resolve host: mirrorlist.centos.org解决方案
linux·运维·服务器·centos
Sally璐璐1 小时前
CentOS企业级文件服务器终极部署指南
linux·服务器·centos
岁月玲珑1 小时前
【如何判断Linux系统是Ubuntu还是CentOS】
linux·ubuntu·centos
梅孔立1 小时前
yum update 报错 Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 等解决办法
linux·python·centos
ldj20201 小时前
Centos 安装Jenkins
java·linux
Sca_杰1 小时前
centos指令
linux·运维·centos
几道之旅1 小时前
centos 7 安装NVIDIA Container Toolkit
linux·运维·centos