我尝试添加-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
,但我不确定做错了什么
答案 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