MISE À JOUR: Cela fait quelques années depuis que j'ai posté cette réponse et entre-temps j'ai réécrit et amélioré le script que j'ai présenté ici plusieurs fois. J'ai décidé de reposter le nouveau script comme une toute nouvelle réponse. Je recommande vivement de l'utiliser plutôt que celui-ci.
INTRODUCTION
J'ai observé que l'ordre dans lequel la commande find affiche les éléments trouvés dans un répertoire varie dans des répertoires identiques sur différentes partitions. Si vous comparez les hachages du même répertoire, vous n'avez pas à vous préoccuper de cela, mais si vous obtenez les hachages pour vous assurer qu'aucun fichier n'a été manqué ou corrompu lors d'une copie, vous devez inclure une ligne supplémentaire pour trier le contenu du répertoire et de ses éléments. Par exemple, la réponse de Matthew Bohnsack est assez élégante:
find ./chemin/vers/le/répertoire/ -type f -print0 | xargs -0 sha1sum
Mais si vous l'utilisez pour comparer un répertoire copié à son original, vous enverriez la sortie dans un fichier texte que vous compareriez à la liste de sortie de l'autre répertoire en utilisant Kompare ou WinMerge ou en obtenant simplement les hachages de chaque liste. Le problème est que, comme l'ordre dans lequel l'outil find affichera le contenu peut varier d'un répertoire à un autre, Kompare signalera de nombreuses différences car les hachages n'ont pas été calculés dans le même ordre. Pas grave pour les petits répertoires mais assez ennuyeux si vous traitez avec 30000 fichiers. Par conséquent, vous devez effectuer les étapes supplémentaires de tri de la sortie pour faciliter la comparaison des listes de hachages entre les deux répertoires.
find ./chemin/vers/le/répertoire/ -type f -print0 | xargs -0 sha1sum > sha1sum_list_unsorted.txt
sort sha1sum_list_unsorted.txt > sha1sum_list_sorted.txt
Cela triera la sortie de sorte que les fichiers avec le même hachage seront sur les mêmes lignes lors de l'exécution du programme de différenciation (à condition qu'aucun fichier ne manque dans le nouveau répertoire).
ET MAINTENANT LE SCRIPT...
Voici un script que j'ai écrit. Il fait la même chose que la réponse find/xarg mais triera les fichiers avant d'obtenir le sha1sum (en les gardant dans le même répertoire). La première ligne du script trouve tous les fichiers dans le répertoire de manière récursive. La suivante trie les résultats par ordre alphabétique. Les deux suivantes prennent le contenu trié et ajoutent un sha1sum et des guillemets aux fichiers de la liste triée, créant un grand script shell qui calcule le hachage de chaque fichier, un par un, et l'envoie vers content_sha1sum.txt.
#!/bin/bash
find . -type f > content.txt
sort content.txt > content_sorted.txt
awk '{print "sha1sum \""$0}' content_sorted.txt > temp.txt
awk '{print $0"\""}' temp.txt > get_sha1.sh
chmod +x get_sha1.sh
./get_sha1.sh > content_sha1sum.txt
rm content.txt
rm content_sorted.txt
rm temp.txt
rm get_sha1.sh
xdg-open content_sha1sum.txt
J'espère que cela vous aide.