[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【已解决】20元求助,linux下用文件名给时间date赋值

本帖最后由 sysclock 于 2019-5-22 11:49 编辑

1、每个小时产生一个文件,文件名的格式如:20190521133322.919753520-beijing32.dat
这个文件名其中的2019 05 21 13 33 22分别是年月日时分秒;

2、写一个小脚本,通过从文件名中提取年月日时分秒等信息,给嵌入式cpu的赋值(命令是: date  -s "2019-05-21"和date -s "13:13:30")

3、已经用cron实现了定时操作,现在只需要一个脚本实现从文件名中提取,并date赋值

=============================================
ps  下面的这几个命令嵌入式linux支持
我自己简单写了一下,搞不定,特来求教,谢谢
ls /tmp/*.dat >t

awk -F "/" '{print $3}' t

awk -F "/" '{a=index($3,".");print substr($3,1,a-1)}' t >t1
awk -F "/" '{a=index($3,".");$year=substr($3,1,a-1)}' t >t1
你好,北京

没看明白,有没有环境截图,命令回显输出结果之类的,才好作样本分析。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

本帖最后由 sysclock 于 2019-5-22 06:47 编辑

回复 2# amwfjhh

不好意思,昨天晚上写得太潦草。
    重新编辑了一下需求,您看看现在我写明白了没?
谢谢~
你好,北京

TOP

ls回显贴出来看下什么样子,是否记录唯一?
date命令应该有一步到位的更改,查下帮助
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

本帖最后由 sysclock 于 2019-5-22 08:32 编辑

回复 4# amwfjhh


1、    ls回显示的结果如下:
/tmp/20190521133322.919753520-beijing32.dat

root@testGis:~# ls /tmp/*.dat
/tmp/20190521133322.919753520-beijing32.dat

2、记录可能有最多不超过511个文件,请用时间最新的一个
这个文件,是我按了一下按键,cpu生成的。这个时间是来自gps的,现在想用这个时间,同步cpu的时间。原来目录下已经有一些文件了。

root@testGis:~# ls /tmp/*.dat
/tmp/20190521133322.919753520-beijing32.dat
/tmp/20190522002653.783192675-beijing32.dat
/tmp/20190522002655.703093740-beijing32.dat
/tmp/20190522002657.635708240-beijing32.dat


3、我在命令行下手动操作,如下:

root@testGis:~# date -s "2019-05-12"
Sun May 12 00:00:00 UTC 2019
root@testGis:~# date -s "13:33:22"
Sun May 12 13:33:22 UTC 2019

4、现在需要一个脚本,把手动操作,改为cron控制下的自动操作。

5、系统内有awk、sed命令
谢谢~
你好,北京

TOP

  1. ls /tmp/*.dat >t
  2. d=`awk -F '/' 'END{print substr($3,1,4)"-"substr($3,5,2)"-"substr($3,7,2)}' t`
  3. t=`awk -F '/' 'END{print substr($3,9,2)":"substr($3,11,2)":"substr($3,13,2)}' t`
  4. date -s $d
  5. date -s $t
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 amwfjhh 于 2019-5-22 09:19 编辑
  1. #!/bin/bash
  2. for i in `ls /tmp/*.dat | sort -r`
  3. do
  4.         strFile=${i##*/}
  5.         ret=`echo $strFile | grep "[0-9]\{14\}\..*$"`
  6.         if [ -z $ret ]
  7.         then
  8.                 continue
  9.         else
  10.                 echo $ret
  11.                 echo date -s "${strFile:0:4}-${strFile:4:2}-${strFile:6:2}"
  12.                 echo date -s "${strFile:8:2}:${strFile:10:2}:${strFile:12:2}"
  13.                 break
  14.         fi
  15. done
复制代码
执行时把date前面的echo去掉即可
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

  1. #!/bin/bash
  2. for file in $(ls /tmp/*.dat | awk -F '/' '{print $NF}'); do
  3.     YYYY=${file:0:4}
  4.     MM=${file:4:2}
  5.     DD=${file:6:2}
  6.     HH=${file:8:2}
  7.     MI=${file:10:2}
  8.     SS=${file:12:2}
  9.     echo date -s "$YYYY-$MM-$DD"
  10.     date -s "$YYYY-$MM-$DD"
  11.     echo date -s "$HH:$MI:$SS"
  12.     date -s "$HH:$MI:$SS"
  13. done
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

另外,为何不把 date  -s "2019-05-21" 和 date -s "13:13:30" 合并成一个命令呢:
date  -s "2019-05-21 13:13:30"
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

一行。
  1. ls /tmp/*.dat |awk 'BEGIN{FS="/|\\."}{da=substr($3,1,8);h=substr($3,9,2);m=substr($3,11,2);s=substr($3,13,2);printf("\"%s %s:%s:%s\"",da,h,m,s)}' | xargs date -s
复制代码

TOP

版上牛人真多,batcher的支付宝短信给俺一个吧。
谢谢大家。
还有一个任务,请大家帮忙,另外发一个帖子了。
你好,北京

TOP

多文件处理时注意一下执行转换文件的唯一性,另注意下防止其它文件生成的.dat文件的干扰。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 8# Batcher


    batcher大人这个文件有个小bug,有多少个dat文件,就echo多少次。

root@testGis:/mnt/mmcblk2/scripts# ./caliTime3
date -s 2019-05-22
Wed May 22 00:00:00 UTC 2019
date -s 02:40:57
Wed May 22 02:40:57 UTC 2019
date -s 2019-05-22
Wed May 22 00:00:00 UTC 2019
date -s 02:46:46
Wed May 22 02:46:46 UTC 2019
date -s 2019-05-22
Wed May 22 00:00:00 UTC 2019
date -s 02:48:45
Wed May 22 02:48:45 UTC 2019
date -s 2019-05-22
Wed May 22 00:00:00 UTC 2019
date -s 02:48:46
Wed May 22 02:48:46 UTC 2019
你好,北京

TOP

回复 9# Batcher


    因为我是新手,炯,
谢谢~
你好,北京

TOP

回复 7# amwfjhh

这个代码测试是比较完美的。
后来人请参考此。

谢谢~
你好,北京

TOP

返回列表