HTTP経由でリモートファイルのファイル変更日時を抽出する簡単なBashスクリプトを作成しています。
ファイルの例:http://example.com/bar/example.pdf
これはできますかなし実際のファイルをダウンロードしますか?そうでない場合、最善の選択肢は何ですか?
正直に言うと、直接ではありません。
ファイルに関する情報を取得するには、リモートサイトからデータをフェッチする必要があります。通常、これはHEAD
リクエストを使用して行われますが、一部の(ほとんど?)サーバーはGET
リクエストを行う場合と同様に、正しく実装せず、ファイル全体を配信しません。 curl
がインストールされていると仮定します。
curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
あなたが望むものを与えるかもしれませんが、言ったように、それはサーバーに大きく依存します。
サーバーの応答には通常Last-Modified
フィールドがあり、ファイルをダウンロードせずに確認できます。 -X HEAD
を使用する必要はありません。そのための特別なオプション-I
があります((-s
は進行状況の出力を抑制します):
curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified
また、私の場合、カールがインストールされていません(私は組み込みデバイス用のスクリプトを実行しています)、wget
のみ。 wgetを使用する方法は次のとおりです。
wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified
--server-response
はヘッダーを出力し、--spider
オプションは強制的にページをダウンロードせず、ページの存在を確認します。