如何使用curl下载远程服务器上最新创建的文件
使用curl下载远程服务器上的最新文件(按创建时间)
根据你给出的文件名规律,文件名中包含明确的时间戳(格式为yyyyMMdd.HHmmss),可以通过以下两种方式实现下载最新文件:
方式一:远程服务器支持目录列表(推荐)
如果远程服务器(如Apache/Nginx)开启了目录浏览功能,可先获取目录内的文件列表,筛选出目标文件并按时间戳排序,最后下载最新的那个:
# 1. 获取最新的目标jar文件名 LATEST_FILE=$(curl -s "http://你的远程服务器地址/目标目录/" | grep -o "user-producer-info-etl-2\.0\.0-[0-9]\+\.[0-9]\+-[0-9]\+-exec\.jar" | sort -r | head -n 1) # 2. 下载该文件(-O 参数表示保留原文件名) curl -O "http://你的远程服务器地址/目标目录/$LATEST_FILE"
命令解释:
curl -s:静默请求目录,不输出多余的进度或错误信息grep -o:仅提取匹配命名规则的jar文件名sort -r:对文件名按时间戳倒序排序,最新的文件排在最前head -n 1:取排序后的第一个文件,即最新文件
方式二:远程服务器不支持目录列表(仅当知道时间戳规律时可用)
如果无法获取目录列表,且你清楚文件的时间戳生成规则(比如每日固定时间构建),可以尝试生成最近的时间戳拼接文件名进行下载:
# 示例:生成当前日期的时间戳格式(需根据实际构建时间调整) TIMESTAMP=$(date +"%Y%m%d.%H%M%S") curl -O "http://你的远程服务器地址/目标目录/user-producer-info-etl-2.0.0-$TIMESTAMP-53-exec.jar"
这种方式的局限性在于,若实际构建时间与生成的时间戳不符,下载会失败。
内容的提问来源于stack exchange,提问作者gcpdev
相关产品推荐
相关产品推荐

