Get modification time of remote file over HTTP in Bash script

The server response does usually have Last-Modified field, you can check it without downloading the file. No need to use -X HEAD, there's a special option -I for that (the -s suppresses progress output):

curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified

Also in my case there's no curl installed (I'm doing a script for an embedded device), just wget. The way with wget is:

wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified

The --server-response prints headers, and the --spider option forces to not download pages, but rather check their existence.


To be honest, not directly.

You will have to fetch data from the remote site to get information about the file. Usually this is done with a HEAD request, but some (most?) servers haven't implemented it correctly and deliver the whole file, just like doing a GET request. Assuming that you have curl installed:

curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'

might give you what you want, but as said, it highly depends on the server.

Tags:

Http

Bash