Je construis un petit outil qui téléchargera des fichiers en utilisant wget, en lisant les URL de différents fichiers. La même URL peut être présente dans différents fichiers; l'URL peut même être présente dans un fichier plusieurs fois. Il serait inefficace de télécharger une page plusieurs fois (chaque fois que son URL se trouve dans la liste). Ainsi, l'approche simple est de sauvegarder le fichier téléchargé et de demander à ne pas le télécharger à nouveau s'il est déjà là.Comment calculer un hachage pour une chaîne (url) dans bash pour la mise en cache de wget
Ce serait très simple; cependant les urls sont très longs (beaucoup de paramètres GET) et ne peuvent donc pas être utilisés comme tels pour les noms de fichiers (wget donne l'erreur 'Impossible d'écrire sur ... [] nom de fichier trop long'). Donc, j'ai besoin de renommer les fichiers téléchargés. Pour que le mécanisme de mise en cache fonctionne, le schéma de renommage doit implémenter "one url < => un nom": si une URL donnée peut avoir plusieurs noms, la mise en cache ne fonctionne pas (ie, je numérote simplement les fichiers dans l'ordre ils sont trouvés, je ne laisserai pas wget identifier quelles urls ont déjà été téléchargées).
Le système de changement de nom le plus simple serait de calculer un hachage md5 du nom du fichier (et non du fichier lui-même, qui est ce que md5sum fait); cela garantirait que le nom de fichier est unique et qu'une URL donnée donne toujours le même nom.
Il est possible de le faire en Perl, etc., mais cela peut-il être fait directement dans bash ou en utilisant un utilitaire système (RedHat)?
Eh bien merci beaucoup pour la réponse rapide; Je n'avais pas réalisé que je pouvais simplement utiliser md5sum de cette façon! Je ne comprends pas ce que vous dites au sujet du « nom » si: quand on calcule la clé md5, il n'y a pas encore ... les noms de fichiers? – Bambax
@bambax: Epsilon Prime fait référence à la partie du nom de fichier de l'URL, par exemple: "index.html". La commande 'sed' supprime tout jusqu'à et y compris la dernière barre oblique. –
@Dennis: Ok, merci; mais dans ce cas, je ne veux certainement pas simplement utiliser la partie du nom de fichier de l'URL, car différents ensembles de paramètres GET devraient entraîner la mise en cache/extraction de différents fichiers. – Bambax