如何通过curl获取末尾文件名未知的服务器URL文件?
高效定位唯一递增编号的data-xxxx.zip文件
核心思路
既然目标目录里始终只有一个符合data-xxxx.zip格式的文件,同时仅存在一个干扰文件data.ini,完全不需要用正则遍历所有可能编号,只需要通过「前缀+后缀」的简单过滤找到唯一匹配的文件即可,全程只会扫描目录内的少量文件(最多2个),不会产生多余请求。
解决方案(按脚本环境分类)
1. Shell/Bash环境
用find命令精准定位,找到第一个匹配项就立刻停止,避免多余操作:
# 查找当前目录下、前缀为data-、后缀为.zip的普通文件,找到即停止 target_file=$(find . -maxdepth 1 -type f -name "data-*.zip" -print -quit)
如果确定有且仅有一个目标文件,也可以用更简洁的ls过滤:
# 直接列出匹配的zip文件,丢弃错误输出(避免无匹配时的报错) target_file=$(ls -1 data-*.zip 2>/dev/null)
2. Python脚本环境
遍历目录文件,匹配前缀和后缀后立刻终止循环,效率拉满:
import os target_file = None # 遍历当前目录下的所有文件/目录 for filename in os.listdir('.'): # 只匹配前缀为data-且后缀为.zip的文件 if filename.startswith('data-') and filename.endswith('.zip'): target_file = filename break # 找到目标后直接跳出循环,无需继续遍历
关于data-*.zip无效的说明
如果直接用通配符无效,大概率是你使用的环境(比如实验室系统的执行环境)不支持shell通配符展开,或者工具本身不识别通配符语法。这时上面的手动过滤/find方法会更可靠。
内容的提问来源于stack exchange,提问作者Zane E.
相关产品推荐
相关产品推荐

