J'essaie de comparer tous les fichiers de deux dossiers via un md5sum en une seule commande. Un peu comme ce qui suit (bash) dans Debian :
$ cd ~/FOLDER1
$ md5sum ~/FOLDER2/* | md5sum -c -
L'idée est que la sortie des hachages du premier md5sum sera passée dans le second et utilisée comme fichier d'entrée. Cependant, les tests effectués montrent qu'il ne fait que comparer chaque fichier de FOLDER2 à lui-même et renvoie "OK" pour chacun d'entre eux. Je pense que la raison pour laquelle cela ne fonctionne pas est que les noms de fichiers générés par le premier md5sum incluent le chemin complet. J'ai regardé md5deep
mais je n'ai rien trouvé pour m'y aider. Je sais qu'il est possible de faire le md5sum pour un dossier, d'écrire les résultats dans un fichier, puis d'utiliser ce fichier comme entrée pour le second md5sum. Je voulais faire tout cela en une seule ligne par le biais d'un pipe, plutôt que d'utiliser deux commandes et d'écrire un fichier.
Edit : La réponse acceptée ici (en utilisant diff
) pourrait faire ce que je veux, mais je ne sais pas si diff
(correctement) compare des fichiers binaires.
Edit : Pour obtenir la sortie que je voulais en utilisant md5sum (qui montre le nom du fichier et "OK"), j'ai eu recours à l'écriture d'un fichier batch. Exécuter avec diffFolders.sh ~/FOLDER1 ~/FOLDER2
.
#!/bin/bash
HERE=$PWD
cd "$1"
md5sum * > /tmp/md5sum.cmp
cd "$2"
md5sum -c /tmp/md5sum.cmp
cd $HERE
Ce script comparera seulement les fichiers qui sont présents dans ~/FOLDER
. Si ~/FOLDER2
a des fichiers supplémentaires, ceux-ci ne seront pas comparés et aucune sortie n'indiquera qu'ils existent.