web-dev-qa-db-ja.com

BashスクリプトでHTTP経由のリモートファイルの変更時間を取得する

HTTP経由でリモートファイルのファイル変更日時を抽出する簡単なBashスクリプトを作成しています。

ファイルの例:http://example.com/bar/example.pdf

これはできますかなし実際のファイルをダウンロードしますか?そうでない場合、最善の選択肢は何ですか?

13
Amal Murali

正直に言うと、直接ではありません。

ファイルに関する情報を取得するには、リモートサイトからデータをフェッチする必要があります。通常、これはHEADリクエストを使用して行われますが、一部の(ほとんど?)サーバーはGETリクエストを行う場合と同様に、正しく実装せず、ファイル全体を配信しません。 curlがインストールされていると仮定します。

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

あなたが望むものを与えるかもしれませんが、言ったように、それはサーバーに大きく依存します。

13
Karsten S.

サーバーの応答には通常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オプションは強制的にページをダウンロードせず、ページの存在を確認します。

11
Hi-Angel