wget を使用してファイルをダウンロードし、さまざまなファイルから URL を読み取る小さなツールを作成しています。同じ URL が異なるファイルに存在する場合があります。URL が 1 つのファイルに複数回存在する場合もあります。ページを数回ダウンロードするのは効率的ではありません (その URL がリストで見つかるたびに)。
したがって、簡単な方法は、ダウンロードしたファイルを保存し、既に存在する場合は再度ダウンロードしないように wget に指示することです。
それは非常に簡単です。ただし、URL は非常に長い (多数の GET パラメーター) ため、ファイル名としてそのまま使用することはできません (wget は「... [] ファイル名が長すぎて書き込めません」というエラーを返します)。
そのため、ダウンロードしたファイルの名前を変更する必要があります。しかし、キャッシング メカニズムを機能させるには、名前変更スキームで「1 つの URL <=> 1 つの名前」を実装する必要があります。特定の URL に複数の名前を付けることができる場合、キャッシングは機能しません (つまり、単純にファイルに順番に番号を付ける場合)。それらが見つかった場合、どの URL が既にダウンロードされているかを wget に識別させません)。
最も単純な名前変更スキームは、ファイル名の md5 ハッシュを計算することです(ファイル自体ではありません。これは md5sum が行うことです)。これにより、ファイル名が一意であり、特定の URL が常に同じ名前になることが保証されます。
これは Perl などで実行できますが、bash で直接実行したり、システム ユーティリティ (RedHat) を使用して実行したりできますか?