shell中的时间值提取(date)

shell中的时间值提取(date)

方法1

# date +%F

在这里插入图片描述

# date +%T

在这里插入图片描述

# cat time.sh
#!/bin/bash

DATE=`date +%F | sed 's/-//g'``date +%T | sed 's/://g'`
echo $DATE
# chmod u+x time.sh
# sh time.sh
2014082709352

方法2

“date +%Y%m%d%H%M%S”获取时间信息串

[we@h p]$ date +%Y%m%d%H%M%S;date
20160410021109
Sun Apr 10 02:11:09 CST 2016

方法3

“date +%s”获取绝对秒数(UTC),使用“-d”参数还原时间。

#!/bin/bash

print_date()
{
  /bin/date
}

echo -n -e '\f$(date)\t\t| '
print_date

echo -n -e 'SEC=$(date +%s)\t| '
SEC=$(date +%s)
echo "$SEC"

echo -n -e '$(date -d @$SEC)| '
date -d @$SEC

[web@h p] sh date.sh
$(date)         | Tue Apr 12 22:25:41 CST 2016
SEC=$(date +%s) | 1460471141
$(date -d @$SEC)| Tue Apr 12 22:25:41 CST 2016

生成与时间相关的文件名称

应用:

例如用命令替换的方式生成带有时间信息的文件名。

$ touch ./reslog-"`date`".txt
$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 12 05:43 are
-rw-r--r-- 1 root root 0 Sep 12 05:43 reslog-Mon Sep 12 05:43:25 CST 2016.txt
-rw-r--r-- 1 root root 0 Sep 12 05:43 reslog-Mon Sep 12 05:43:36 CST 2016.txt
-rw-r--r-- 1 root root 0 Sep 12 05:43 reslog-Mon Sep 12 05:43:37 CST 2016.txt
-rw-r--r-- 1 root root 0 Sep 12 05:43 reslog-Mon Sep 12 05:43:38 CST 2016.txt
$ touch ./reslog-"`date +%s`".txt
$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 12 05:43 are
-rw-r--r-- 1 root root 0 Sep 12 05:50 reslog-1473630651.txt
-rw-r--r-- 1 root root 0 Sep 12 05:50 reslog-1473630652.txt
-rw-r--r-- 1 root root 0 Sep 12 05:50 reslog-1473630653.txt
-rw-r--r-- 1 root root 0 Sep 12 05:50 reslog-1473630654.txt
$ touch ./reslog-"`date +%Y%m%d%H%M%S`".txt
$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 12 05:43 are
-rw-r--r-- 1 root root 0 Sep 12 05:53 reslog-20160912055308.txt
-rw-r--r-- 1 root root 0 Sep 12 05:53 reslog-20160912055309.txt
-rw-r--r-- 1 root root 0 Sep 12 05:53 reslog-20160912055310.txt

* “date +%H%M%S”,这里的小时是“00~23”格式的,如果使用“date + %I”显示就是“01~12”格式的小时。

这个风格更加直观

$ touch ./reslog-"`date +%F_%T`".txt
$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 12 06:00 are
-rw-r--r-- 1 root root 0 Sep 12 06:02 reslog-2016-09-12_06:02:18.txt
-rw-r--r-- 1 root root 0 Sep 12 06:02 reslog-2016-09-12_06:02:19.txt
-rw-r--r-- 1 root root 0 Sep 12 06:02 reslog-2016-09-12_06:02:20.txt
$ touch ./reslog-"`date +%F\ %T`".txt
$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 12 06:00 are
-rw-r--r-- 1 root root 0 Sep 12 06:06 reslog-2016-09-12 06:06:18.txt
-rw-r--r-- 1 root root 0 Sep 12 06:06 reslog-2016-09-12 06:06:19.txt
-rw-r--r-- 1 root root 0 Sep 12 06:06 reslog-2016-09-12 06:06:20.txt

时间设置

命令:

date,打印、设定日期和时间

选项:

-d, --date=STRING

显示时间;不是当前时间,是字符串指定的时间。

-s, --set=STRING

设置时间

STRING:

“Sun, 29 Feb 2004 16:21:42 -0800”

“2014-02-29 16:21:42 -0800”

“2024-02-29 16:21 -0800”

“2034-02-29 -0800”

“2044-02-29 16:21:42”

“16:00 next Thursday”

“next Thursday”

例子:

设置时间

[root@hp430G2 ~]# date -s "2014-08-27 17:30:55"

显示时间

[weblogic@hp430G2 ~]$ date -d "20140312 17:22:21"
Wed Mar 12 17:22:21 CST 2014
[weblogic@hp430G2 ~]$ date -d "2014-03-12 17:22:21"
Wed Mar 12 17:22:21 CST 2014
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
shell脚本循环执行ncl脚本的示例代码如下: ``` #!/bin/bash path=/path/to/your/ncl/files # 设置ncl文件所在的路径 files=$(ls /path/to/your/data/files/*.nc) # 获取所有要处理的数据文件 for file in ${files[@}; do filename=$(basename $file) # 获取文件名 basedate=$(echo ${filename} | grep -Eo '[[:digit:]]{8}') # 从文件名提取日期 basedate_formatted=$(date -d "${basedate}" +%Y-%m-%d) # 将日期转换为指定格式 export basedate1=${basedate} # 将日期作为环境变量传入ncl脚本 export basedate2=${basedate_formatted} ncl ${path}/your_ncl_script.ncl # 执行ncl脚本 done ``` 在上述示例代码,你需要将`/path/to/your/ncl/files`替换为你的ncl脚本所在的路径,将`/path/to/your/data/files/*.nc`替换为你的数据文件所在的路径和文件名模式。然后,将`your_ncl_script.ncl`替换为你的ncl脚本的文件名。 这段shell脚本会循环遍历指定路径下的所有nc数据文件,提取文件名的日期,并将日期作为环境变量传入ncl脚本。然后,执行ncl脚本进行处理。通过这种方式,你可以实现批量处理nc数据文件的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Shell入门笔记:Linux批量提取文件名/shel文件名提取日期/NCL批量读取文件(shell脚本结合)](https://blog.csdn.net/weixin_43750300/article/details/127560093)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [shell文件循环向NCL脚本传入参数 并执行NCL脚本](https://blog.csdn.net/weixin_44541877/article/details/131605581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值