我正在创建一个简单的 Bash 脚本,通过 HTTP 提取远程文件的文件修改时间/日期。
示例文件:http://example.com/bar/example.pdf
可以这样做吗没有下载实际文件?如果不下载,最佳替代方案是什么?
答案1
说实话,不是直接的。
您必须从远程站点获取数据才能获取有关文件的信息。通常这是通过请求完成的HEAD
,但有些(大多数?)服务器尚未正确实现它,而是像发出请求一样提供整个文件GET
。假设您已curl
安装:
curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
可能会给你你想要的,但正如所说,它高度依赖于服务器。
答案2
服务器响应通常有Last-Modified
字段,您无需下载文件即可检查。无需使用-X HEAD
,有一个特殊-I
选项(-s
抑制进度输出):
curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified
在我的情况下也没有安装 curl(我正在为嵌入式设备编写脚本),只是wget
。使用 wget 的方式是:
wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified
打印--server-response
标题,并且--spider
选项强制不下载页面,而是检查它们的存在。
答案3
手册页--head
仅告知获取标题,而我不需要-v
详细模式,但-s
静默模式适合 bash 脚本:
curl -s --head http://example.com/bar/example.pdf