在 Linux 系统下工作,你或多或少都会接触到各种日志。而这些日志文件,很多都是以年/月/日及时间的格式进行命名,这样可以做到日志文件自动生成及命名,并且不会重复,在实际工作中使用非常广泛。
本文将告诉你,如何在 Linux 系统下使用命令行以当前日期来新建目录或文件。当你想将某些文件(比如前面提到的日志文件)保存成以实际创建日期命名的目录中时,这个方法将非常有帮助。
以下命令将根据你的计算机当前时间创建以当前日期命名的目录或文件,因此,在开始之前请确认你的系统已经设置了正确的时间。
在Linux中创建以年-月-日形式的当前日期命名的目录或文件
想要用当前日期创建目录,可以使用如下的命令:
$ mkdir $(date +"%Y-%m-%d")
或者
$ mkdir "$(date +"%Y-%m-%d")"
命令运行后将创建一个目录,并以 yyyy-mm-dd
形式的当前日期来命名。
要切换到该目录,只需把 mkdir
改为 cd
:
$ cd "$(date +"%Y-%m-%d")"
同样地,如果要新建一个以当前日期命名的文件,只需把 mkdir
改为 touch
即可。
$ touch "$(date +"%Y-%m-%d")"
创建名称包含当前日期的目录或文件
如果要创建名称包含当前日期的目录或文件,也很简单,比如:
$ mkdir ZhangSan-$(date +"%Y-%m-%d")
创建文件:
$ touch ZhangSan-$(date +"%Y-%m-%d")
由于 yyyy-mm-dd` 格式也就是 ISO 格式,因此之前的命令也可以简单写为:
$ mkdir $(date -I)
或者
$ mkdir $(date +%F)
其他例子
如果只想使用当前日期,可以使用以下命令:
$ mkdir "$(date +%d)"
如果只想使用当前月份,可以使用以下命令:
$ mkdir "$(date +%m)"
如果只想使用当前年份,可以使用以下命令。其中小写 y 表示年份的后两位,大写 Y 表示四位完整年份:
$ mkdir "$(date +%y)"
$ mkdir "$(date +%Y)"
如果想使用当前时间创建目录,可以使用以下命令:
$ mkdir "$(date +%r)"
以上命令将会以 hh:mm:ss PM/AM
为格式的当前时间作为名称来创建目录。
如果只需要当前秒数,则执行以下命令:
$ mkdir "$(date +%S)"
如果只需要当前分钟数,则执行以下命令:
$ mkdir "$(date +%M)"
如果只需要当前星期,则执行以下命令:
$ mkdir "$(date +%A)"
如果只需要当前月份,则执行以下命令:
$ mkdir "$(date +%B)"
当然,还有很多其它选项,限于篇幅本文就不一一罗列了。
这里列出了支持的操作:
%a 星期的简称,例如 Sun,Mon 等
%A 星期的全称,例如 Sunday,Monday 等
%b 月份的简称,例如 Jan,Feb 等
%B 月份的全称,例如 January,February 等
%c 日期和时间,例如 Sat 29 Oct 2020 05:02:25 PM CST
%C 世纪
%d 当月的第几天
%D 日期,相当于 %m/%d/%y
%e 当月的第几天,用空格代替首位的0,相当于 %_d
%F 日期,相当于 %Y-%m-%d
%g 年份的后两位
%G 四位年份
%h 相当于 %b
%H 小时,从00到23
%I 小时,从01到12
%j 当年的第几天,001到366之间
%k 小时,用空格代替首位的0,相当于 %_H
%l 小时,用空格代替首位的0,相当于 %_I
%m 月份,从01到12
%M 分钟,从00到59
%n 换行
%N 纳秒,从000000000到999999999
%p 上午(AM)或下午(PM)
%P 类似月%p,但是为小写
%q 一年的四分之几,1到4
%r 12小时制时间,例如 11:11:04 PM
%R 24小时制时间,相当于%H:%M
%s 从 1970-01-01 00:00:00 UTC 到当前的秒数
%S second (00..60)
%t tab符
%T 时间,相当于 %H:%M:%S
%u 星期几,从1到7,1表示星期一
%U 一年的第几个星期,以星期六作为星期的开始,00到53
%V ISO星期数, 以星期一作为星期的开始,01到53
%w 星期几(0..6); 0 表示星期六
%W ISO星期数, 以星期一作为星期的开始,00到53
%x 日期,例如 12/31/99
%X 时间,例如 23:13:48
%y 年份的后两位(00..99)
%Y 四位年份
%z 时区,例如 -0400
%:z 时区,例如 -04:00
%::z 时区,例如 -04:00:00
%:::z 时区,例如 -04, +05:30
%Z 时区, 例如 EDT
要了解更多 date
、mkdir
、 touch
命令的信息,可以使用 man
命令查看它们的详细用法。
$ man date
$ man mkdir
$ man touch