쉘 코드 스크립트의 타임스탬프

쉘 코드 스크립트의 타임스탬프

저는 쉘 코딩이 처음이고 이 질문을 할 수 있는 올바른 위치에 있기를 바랍니다. 저는 일일 파일을 수집하여 FTP를 통해 보내는 쉘 스크립트를 사용하고 있습니다. 파일 이름에는 날짜와 시간이 모두 있으며 파일 형식은 text 입니다 (.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
.......

"put" 대신 "mput"을 사용해야 합니다. 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"

관련 정보