我有一个脚本,执行时会生成一些文件。我修改了脚本,在其顶部添加了以下两行
mkdir ABC
cd ABC
这样形成的新文件就会在该目录中ABC
。我的问题是,如果我在 3 月 26 日运行脚本,如何将当前日期添加到此目录名称中ABC
(ABC_mar_26
日期格式没有具体标准,ABC_03_26
也可以)。
答案1
要得到ABC_03_26
:
mkdir "ABC_$(date +'%m_%d')"
如果您想要月份名称:
mkdir "ABC_$(LC_ALL=C date +'%b_%d')"
请注意,为%b
您提供区域设置的缩写月份名称,但第一个字母大写。
通过zsh
,您可以:
mkdir "ABC_${(L):-$(LC_ALL=C date +'%b_%d')}"
或使用迅速扩张:
$ LC_ALL=C; print -rl -- ${(L)${(%):-%D{%b_%d}}}
mar_26
答案2
这是针对您的问题的具体示例应用程序,Windows/cygwin 用户可能也会感兴趣。我曾经创建过一个.bat
批处理脚本,通过创建一个以当前日期时间命名的子文件夹来自动备份文件。首先,从环境中获取变量%time%
,然后格式化以最终具有前导0
.然后将字符串连接到一个新变量%datetimef%
并传递给mkdir
:
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
set year=%date:~-4%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
set datetimef=%year%%month%%day%-%hour%%min%%secs%
mkdir version%datetimef%
cp *.pdf version%datetimef%/