我是 shell 编码的新手,希望我来对地方了,可以问这个问题。我正在使用一个 shell 脚本,它收集每日文件并通过 ftp 发送它们。文件名中有日期和时间,文件类型是文本(.txt)
。文件位于一个目录中,该目录中还有许多其他文件,这些文件每天在不同时间创建。我尝试发送的那些文件是在上午 8 点创建的,但分钟和秒数不同。例如:
team1_mnpg_ef_part_2018-02-26_080005.txt
team1_abc_part_2018-02-26_080031.txt
文件名中的时间不同,但所有文件都以 08 为小时,我想发送所有以今天日期和 08 为小时的文件,无论分钟和秒是多少(无论哪一分钟和秒)。这是我的代码:
#!/bin/ksh
#
#
DATE=`date "+%Y-%m-%d"`
HOST='abcd.dmn.com'
USER='*****'
PASSWD='******'
LOCALPATH='/opt/abc/Output'
LOGPATH='/opt/abc/logs'
ftp -n -v $HOST <<END_SCRIPT>>$LOGPATH/ftp_abc_$DATE_log.txt
quote USER $USER
quote PASS $PASSWD
lcd $LOCALPATH
put team1_abc_part_$DATE_(I do not know what should I write here).txt
put team1_mnpg_ef_part_$DATE_.txt
put team1_fdop_part_$DATE_.txt
quit
END_SCRIPT
exit 0
文件在目录中,当我写入时间戳时,例如put team1_abc_part_$DATE_080031.txt
在上面的脚本中,它运行良好,我可以在目标服务器上看到已发送的文件。
我应该在文件名中的时间部分写什么以便脚本发送在 08 创建的文件以及任何分钟和秒?
答案1
#!/bin/ksh
#
#
DATE=`date "+%Y-%m-%d"`
HOUR=`date "+%H"`
.....
mput team1_abc_part_$DATE_$HOUR*txt
.......
您应该使用“mput”而不是“put” https://stackoverflow.com/questions/6692799/how-to-ftp-multiple-file-using-shell-script
也可能有用:
# get timestamp
date +%s
# from timestamp to Date
date "+%Y-%m-%d" -d @1519661267
# date 2 minuts ago
date "+%Y-%m-%d" -d "-2 min"