使用 DOY 作为文件名的一部分,通过 ftp 获取年份并下载文件
Getting day of year and downloading files via ftp using DOY as part of file name
我目前有一个 bash 脚本,它的唯一工作是每天登录到 FTP 服务器并下载文件。部分文件名是一年中的某一天 (DOY)。所以我得到当前日期并使用 %j
选项来获取 DOY。这是我的代码片段:
doy=$(date +%j)
mget filename_$doy*
当这个脚本运行时,它不仅会获取当前DOY的文件,还会获取之前的所有文件。因此,如果今天是 DOY 260,它会获取从 0 到 260 的所有文件。我只想要 260。我的 bash 脚本的其余部分是来自以下网站的模型:Automatic/periodic FTP download using cron jobs。我做错了什么?
编辑:根据@redneb 的请求的完整脚本
#!/bin/bash
HOST='ftp.server' # change the ipaddress accordingly
USER='user' # username also change
PASSWD='pass' # password also change
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
doy=$(date +%j)
mget filename_$doy*
bye
EOF
编辑 2:@Cyrus 的回答有效。这是我的最终工作脚本,以防其他人需要帮助。在登录 FTP 服务器之前,您需要输入 bash 命令。谢谢!
#!/bin/bash
HOST='ftp.server' # change the ipaddress accordingly
USER='user' # username also change
PASSWD='pass' # password also change
doy=$(date +%j)
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
mget filename_$doy*
bye
EOF
移动
doy=$(date +%j)
到
之前的一行
ftp -inv $HOST<<EOF
我目前有一个 bash 脚本,它的唯一工作是每天登录到 FTP 服务器并下载文件。部分文件名是一年中的某一天 (DOY)。所以我得到当前日期并使用 %j
选项来获取 DOY。这是我的代码片段:
doy=$(date +%j)
mget filename_$doy*
当这个脚本运行时,它不仅会获取当前DOY的文件,还会获取之前的所有文件。因此,如果今天是 DOY 260,它会获取从 0 到 260 的所有文件。我只想要 260。我的 bash 脚本的其余部分是来自以下网站的模型:Automatic/periodic FTP download using cron jobs。我做错了什么?
编辑:根据@redneb 的请求的完整脚本
#!/bin/bash
HOST='ftp.server' # change the ipaddress accordingly
USER='user' # username also change
PASSWD='pass' # password also change
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
doy=$(date +%j)
mget filename_$doy*
bye
EOF
编辑 2:@Cyrus 的回答有效。这是我的最终工作脚本,以防其他人需要帮助。在登录 FTP 服务器之前,您需要输入 bash 命令。谢谢!
#!/bin/bash
HOST='ftp.server' # change the ipaddress accordingly
USER='user' # username also change
PASSWD='pass' # password also change
doy=$(date +%j)
ftp -inv $HOST<<EOF
quote USER $USER
quote PASS $PASSWD
bin
cd /filedirectory/
mget filename_$doy*
bye
EOF
移动
doy=$(date +%j)
到
之前的一行ftp -inv $HOST<<EOF