昨天的Shell脚本日期

时间:2014-01-02 02:20:02

标签: shell

我尝试添加-d "yesterday",但我没有运气好运。以下是我对整个剧本的看法:

#! /bin/bash

saveDir="TJ"
dd=$(date +"%m-%d-%Y")
for file in *.csv ; do
    saveName="${saveDir}/TJ ${dd}.csv"
    cut -d',' -f2,14 "$file" > "$saveName"
done

如何让dd输出昨天的日期而不是当前日期?

编辑:这就是我现在所拥有的

#! /bin/bash

saveDir="TJ"
dd=$(date --date='yesterday' +'%m-%d-%Y')
for file in *.csv ; do
    saveName="${saveDir}/TJ ${dd}.csv"
    cut -d',' -f2,14 "$file" > "$saveName"
done

以上是将文件保存为TJ .csv,但我不确定做错了什么

5 个答案:

答案 0 :(得分:4)

我想你想用 -

$ cat test.sh
#!/bin/bash

dd=$(date --date='yesterday' +'%m-%d-%Y')
echo $dd
$ ./test.sh
12-31-2013

或者您可以使用

$ date -d '1 day ago' +'%m-%d-%Y'
12/31/2013

明天 -

$ date -d '1 day' +'%m-%d-%Y'
01/02/2014

$ date --date='tomorrow'
Thu Jan  2 21:25:00 EST 2014

答案 1 :(得分:1)

从纪元开始,以秒为单位获取今天的日期。减去86400到昨天。然后将昨天转换为您想要的字符串格式。

today=`date +"%s"`

yesterday=`expr $today - 86400`

dd=`date --date="@${yesterday}" +"%m-%d-%Y"`

答案 2 :(得分:0)

试试这个

yday=$(date --date yesterday "+%d-%m-%Y")
echo $yday

如果您在Linux中工作

yday=$(date -d "-1 days" +"%d-%m-%Y")
echo $yday

答案 3 :(得分:0)

我在Linux上试过date -d "yesterday" +%m-%d-%Y,它运行正常。

如果您使用的是unix平台,则无法使用-d, 你可以使用perl获取昨天的日期,这就是我使用perl

的方式
dd=$(perl -e '($a,$b,$c,$day,$mon,$year,$d,$e,$f) = localtime(time-86400);printf "%02d-%02d-%4d",$day, $mon+1, $year+1900')
echo $dd
01-01-2014

答案 4 :(得分:0)

 NewDate=`date +"%A %d %B %Y" --date="-1 day"`
 echo $NewDate

 this will give your yesterday's date (-1)
 This will give you tomorrow's date (+1)
 even you can check for any values like (+/-) days