1 首先,打开PowerShell,输入“Get-Date”命令,查看当前的时间;
2 然后,输入“Get-Date -uFormat %Y-%m-%d %H:%M:%S”命令,可以获取0时区的当前时间;
3 如果想获取其他时区的时间,可以使用“Get-Date -TimeZone 时区”命令,其中时区可以是UTC、GMT或者其他时区的名称;
4 最后,还可以使用“Get-Date -uFormat %Y-%m-%d %H:%M:%S”命令,结合“TimeZone”参数,获取指定时区的时间。
shell编程:
如果你为每个文件按日期命名的格式都一致的话,那么”ls -l“命令列出的文件列表就是默认按文件名称(日期先后)排序的。那么最后一个就是最新的,文件名可以用以下方式获取。
filename=‘ls -l | tail -n 1 | awk '{print $9}'’
转移文件用 mv 命令即可
逐条解释:
ls -lt /dirname/
列出此目录下的所有文件并按照时间先后排序
grep filename
过滤出包含关键字的文件
head -n 1
查看排名第一的文件
awk '{print $9}'
打印出第九字段,此处为文件名
24小时,就是相差一天,所以变化的只有天数。
我这里提供一个笨方法:
用date获取当前日期和时间,格式化成你的文件命名格式,用下面的字符串截取方法获得天数:
${varible:n1:n2}:截取变量varible从n1到n2之间的字符串
天数减1后,重新组织成新的字符串。
用循环比较 ls 出来的文件名与这个字符串。
代码试过后再放上来。
1、date +%w
%w day of week (06); 0 is Sunday
2、如果星期2-6,上一个工作日肯定就是
t1=`date -d yesterday`
或者
t2=`date -d -1day`
3、如果星期天,上一个工作日肯定就是
t3=`date -d -2day`
4、如果星期1,上一个工作日肯定就是
t4=`date -d -3day`
5、法定节假日根据实际情况算吧
6、实例
#!/bin/sh
week=`date +%w`
case "$week" in
0)
last_work_day=`date -d -2day`
;;
1)
last_work_day=`date -d -3day`
;;
)
last_work_day=`date -d -1day`
;;
esac
echo $last_work_day
使用date命令加上合适的时间格式化字符串(+%s),会显示当前时间(或-d参数指定的时间)与1970-01-01 00:00:00相差的秒数(详细可以参考date的man手册)
所以基本想法就是使用date命令分别获取当前时间与文件修改时间的秒数,然后看这2个秒数之间是否有相差180秒以上。
获取当前时间比较简单,直接date +%s就ok了
下面看看如何获取文件时间
使用stat 命令后面跟一个文件名可以获取文件的状态,包括文件修改时间。其中文件修改时间会单独一行显示,格式如下:Modify: 2013-02-21 17:58:05404876407 +0800 (具体的精度可能系统不同略微有些差别,但大致格式是这样)
所以我们可以stat myfilename | grep Modify来获取文件的修改时间的信息,然后通过awk分别获取时间的日期和时间段
stat myfilename | grep Modify | awk '{print $2}' #这句获取了日期段,即上面例子里面的2013-02-21
stat myfilename | grep Modify | awk '{split($3,var,"");print var[1]}' #这句获取了时间段,即上面例子里面的17:58:05,具体关于awk的使用可以参考awk的使用手册
那么现在可以获取文件修改时间与1970-01-01 00:00:00相差的描述了,就是date -d "$file_date $file_time" +%s
那么这个时间与当前时间想减的结果与180相比就可以知道是否满足条件了,满足条件的话就可以执行相应的命令。
参考代码如下:
current_datetime=`date +%s`filedate=`stat tttxt | grep Modify | awk '{print $2}'`
filetime=`stat tttxt | grep Modify | awk '{split($3,var,"");print var[1]}'`
file_datetime=`date -d "$filedate $filetime" +%s
timedelta=`expr $current_datetime - $file_datetime`
if [ "$timedelta" -gt "180" ];then
echo "match condition"
fi
以上就是关于powershell获取0时区时间全部的内容,包括:powershell获取0时区时间、shell获取目录下最新的文件,文件是以日期命名、LINUX shell 如何获取当前时间之前24小时的所有文件,文件都是以时间命名的!23308等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)