L33.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- du和date

5.5 du:统计磁盘空间使用情况

5.5.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ du命令可以用于统计磁盘空间的使用情况,这个命令有助于我们找出那个文件过多地占用了磁盘空间。

【语法格式】

du [option] [file]
du [选项] [<文件或目录>]

​ **说明:**在du命令及后面的选项里,每个元素之间都至少要有一个空格。

【选项说明】

​ 表5-5针对该命令的参数选项进行了说明。

​ 表5-5 du命令的参数选项及说明

在这里插入图片描述

5.5.2 使用范例

​ **范例5-10:**通过参数-a显示所有目录或文件所占空间。

[root@centos7 ~]# du -a	#显示当前目录下所有文件(包括隐藏文件及子目录下的所有文件)的大小。
4	./.bash_logout
4	./.bash_profile
4	./.bashrc
4	./.cshrc
4	./.tcshrc
20	./.bash_history
4	./anaconda-ks.cfg
4	./.viminfo
72	.

​ **范例5-11:**参数-s与-h的使用案例。

[root@centos7 ~]# du -s	#显示当前目录的总大小。
72	.
[root@centos7 ~]# du -h	#-h参数会换算成K、M、G这种易读易理解的结果。
72K	.
[root@centos7 ~]# du -sh	#-sh是常用的命令组合,也是推荐大家使用的方法。
72K	.
[root@centos7 ~]# du -sh /usr/local	#显示指定目录的总大小。
0	/usr/local

​ **范例5-12:**显示指定层次的目录的大小。

[root@centos7 ~]# du -h --max-depth=1 /usr/local/	#只显示第一层目录的大小。
0	/usr/local/bin
0	/usr/local/etc
0	/usr/local/games
0	/usr/local/include
0	/usr/local/lib
0	/usr/local/lib64
0	/usr/local/libexec
0	/usr/local/sbin
0	/usr/local/share
0	/usr/local/src
0	/usr/local/
[root@centos7 ~]# du -h --max-depth=2 /usr/local/	#只显示第一、第二层目录的大小。
0	/usr/local/bin
0	/usr/local/etc
0	/usr/local/games
0	/usr/local/include
0	/usr/local/lib
0	/usr/local/lib64
0	/usr/local/libexec
0	/usr/local/sbin
0	/usr/local/share/applications
0	/usr/local/share/info
0	/usr/local/share/man
0	/usr/local/share
0	/usr/local/src
0	/usr/local/

​ **范例5-13:**排除指定目录的案例。

[root@centos7 ~]# du -h --max-depth=2 /usr/local/ --exclude=/usr/local/share	#不显示/usr/local/share目录的大小。
0	/usr/local/bin
0	/usr/local/etc
0	/usr/local/games
0	/usr/local/include
0	/usr/local/lib
0	/usr/local/lib64
0	/usr/local/libexec
0	/usr/local/sbin
0	/usr/local/src
0	/usr/local/

5.6 date:显示与设置系统时间

5.6.1 命令详解

【命令星级】 ★★★★★

【功能说明】

​ date命令用于显示当前的系统时间或设置系统时间。

【语法格式】

date [option] [+FORMAT]
date [选项] [+日期格式]

【选项说明】

​ 表5-6针对date命令的参数选项进行了说明。

​ 表5-6 date命令的参数选项及说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.6.2 使用范例

​ **范例5-14:**常用时间格式测试例子。

​ 大家可以对着上面的表格逐一测试参数,这里限于篇幅仅列举一部分:

[root@centos7 ~]# date +%y	#显示年(短格式)。
20
[root@centos7 ~]# date +%Y	#显示年(长格式)。
2020
[root@centos7 ~]# date +%m	#显示月。
10
[root@centos7 ~]# date +%d	#显示日。
11
[root@centos7 ~]# date +%H	#显示小时。
18
[root@centos7 ~]# date +%M	#显示分。
48
[root@centos7 ~]# date +%S	#显示秒。
45
[root@centos7 ~]# date +%F	#显示特殊格式日期(年-月-日)。
2020-10-11
[root@centos7 ~]# date +%T	#显示特殊格式时间(时:分:秒)。
18:48:52

​ **范例5-15:**通过-d显示指定字符串所描述的时间的示例。

[root@centos7 ~]# date +%F -d "-1day"	#显示昨天(简洁写法)。
2020-10-10
[root@centos7 ~]# date +%F -d "yesterday"	#显示昨天(英文写法)。
2020-10-10
[root@centos7 ~]# date +%F -d "-2day"	#显示前天。
2020-10-09
[root@centos7 ~]# date +%F -d "+1day"	#显示明天。
2020-10-12
[root@centos7 ~]# date +%F -d "tomorrow"	#显示明天(英文写法)。
2020-10-12
[root@centos7 ~]# date +%F -d "+2day"	#显示2天后。
2020-10-13
[root@centos7 ~]# date +%F -d "1month"	#显示1个月后。
2020-11-11
[root@centos7 ~]# date +%F -d "1year"	#显示1年后。
2021-10-11
#说明:这里的+号表示未来,-号表示过去,day表示日,year表示年,month表示月。
[root@centos7 ~]# date +%F -d "24hour"	
2020-10-12
[root@centos7 ~]# date +%F -d "1440min"
2020-10-12
[root@centos7 ~]# date +%F -d "-1440min"
2020-10-10

​ **说明:**这里的hour表示小时,min表示分。

​ **范例5-16:**时间格式转换例子。

[root@centos7 ~]# date
Sun Oct 11 19:00:37 CST 2020
[root@centos7 ~]# date -d "Sun Oct 11 19:00:37 CST 2020" "+%Y-%m-%d %H:%M:%S"
2020-10-11 19:00:37

说明:

​ -d选项后面应接上需要转化的时间,最后再接上你想要输出的时间格式。

​ 下面是一个企业面试题,要求转换日志的时间格式,解答该题会利用到上面的知识点,同时还会使用awk命令。

​ 备用数据如下:

[root@centos7 ~]# cat >test.log<<EOF
> Sat May 19 13:40:02 CST 2019 is 13213213
> Sat May 19 19:37:43 CST 2019 is 1012122
> Sat May 19 13:40:03 CST 2019 is 13213213
> Sat May 19 19:37:42 CST 2019 is 1012122
> Sat May 19 13:40:03 CST 2019 is 13213213
> Sat May 19 19:37:43 CST 2019 is 1012122
> EOF

​ 解答过程如下:

[root@centos7 ~]# awk -F "is" '{print "echo $( date -d \" "$1"\" \"+%F %T \" )",$2}' test.log
#对内容按照命令进行拼接。
echo $( date -d " Sat May 19 13:40:02 CST 2019 " "+%F %T " )  13213213
echo $( date -d " Sat May 19 19:37:43 CST 2019 " "+%F %T " )  1012122
echo $( date -d " Sat May 19 13:40:03 CST 2019 " "+%F %T " )  13213213
echo $( date -d " Sat May 19 19:37:42 CST 2019 " "+%F %T " )  1012122
echo $( date -d " Sat May 19 13:40:03 CST 2019 " "+%F %T " )  13213213
echo $( date -d " Sat May 19 19:37:43 CST 2019 " "+%F %T " )  1012122
[root@centos7 ~]# awk -F "is" '{print "echo $( date -d \" "$1"\" \"+%F %T \" )",$2}' test.log|bash
2019-05-19 13:40:02 13213213
2019-05-19 19:37:43 1012122
2019-05-19 13:40:03 13213213
2019-05-19 19:37:42 1012122
2019-05-19 13:40:03 13213213
2019-05-19 19:37:43 1012122
#命令说明:使用is作为分隔符,$1是“Sat May 19 13:40:02 CST 2019”,$2是“13213213”,首先使用date命令对原时间格式进行转换,然后利用awk拼凑出如下格式,最后使用bash执行命令。

​ **范例5-17:**通过参数-s设定时间。

[root@centos7 ~]# date -s 20201008	#设置成20201008,具体时间为空即00:00:00。
Thu Oct  8 00:00:00 CST 2020
[root@centos7 ~]# date -s 00:00:03 	#设置具体时间,不会对日期做更改。
Thu Oct  8 00:00:03 CST 2020
[root@centos7 ~]# date -s "00:00:03 20201008"	#这样可以设置全部时间。
Thu Oct  8 00:00:03 CST 2020
[root@centos7 ~]# date -s "00:00:03 2020-10-08"	#日期可使用不同的格式。
Thu Oct  8 00:00:03 CST 2020
[root@centos7 ~]# date -s "00:00:03 2020/10/08"	#日期可使用不同的格式。
Thu Oct  8 00:00:03 CST 2020

​ **范例5-18:**显示时间后换行,再显示日期。

[root@centos7 ~]# date +%T%n%D	#%n的作用是换行。
21:44:09
10/24/20

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/125686487