저는 쉘 코딩이 처음이고 이 질문을 할 수 있는 올바른 위치에 있기를 바랍니다. 저는 일일 파일을 수집하여 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"