Zeitstempel im Shell-Code-Skript

Zeitstempel im Shell-Code-Skript

Ich bin neu in der Shell-Codierung und hoffe, dass ich am richtigen Ort bin, um diese Frage zu stellen. Ich arbeite mit einem Shell-Skript, das täglich Dateien sammelt und sie per FTP sendet. Im Dateinamen sind Datum und Uhrzeit enthalten und der Dateityp ist Text (.txt). Die Dateien befinden sich in einem Verzeichnis, in dem sich viele andere Dateien befinden, die täglich zu unterschiedlichen Zeiten erstellt werden. Die Dateien, die ich senden möchte, werden um 08:00 Uhr erstellt, jedoch mit unterschiedlichen Minuten und Sekunden. Beispiel:

team1_mnpg_ef_part_2018-02-26_080005.txt
team1_abc_part_2018-02-26_080031.txt

Die Zeit ist im Dateinamen unterschiedlich, aber alle haben 08 als Stunde und ich möchte alle Dateien senden, die beispielsweise das heutige Datum und 08 als Stunde mit beliebigen Minuten und Sekunden haben (es spielt keine Rolle, welche Minute und Sekunde). Hier ist mein Code:

#!/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

Die Dateien befinden sich im Verzeichnis und wenn ich den Zeitstempel schreibe, beispielsweise put team1_abc_part_$DATE_080031.txtim obigen Skript, funktioniert es einwandfrei und ich kann die gesendete Datei auf dem Zielserver sehen.

Was muss ich für den Zeitteil des Dateinamens schreiben, damit das Skript die um 08 Uhr erstellten Dateien mit beliebiger Minute und Sekunde sendet?

Antwort1

#!/bin/ksh
#
#

DATE=`date "+%Y-%m-%d"`
HOUR=`date "+%H"`
.....
mput team1_abc_part_$DATE_$HOUR*txt
.......

Sie sollten „mput“ statt „put“ verwenden. https://stackoverflow.com/questions/6692799/how-to-ftp-multiple-file-using-shell-script

könnte auch nützlich sein:

# 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"

verwandte Informationen