Comparer le contenu de deux répertoires à partir de la ligne de commande

Pour comparer et lister les différents contenus de deux répertoires sans la sortie supplémentaire que vous obtenez à travers des commandes comme diff, vous pouvez utiliser la commande comm à la place. Pour commencer, lancez Terminal et tapez la commande suivante, en ajustant les chemins de répertoire selon le cas:

comm -3 <(ls -1 folder1) <(ls -1 folder2)

La sortie listée sera les fichiers qui sont différents dans chaque dossier, avec des fichiers uniques à l'alignement du dossier 1 à gauche, et des fichiers uniques au dossier 2 alignés à droite.

Par exemple, pour comparer le contenu d'un dossier appelé "Pictures" et d'un dossier nommé "OldPictures", tous deux stockés dans le répertoire de téléchargements de l'utilisateur, la syntaxe serait la suivante:

comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)

La sortie peut ressembler à ceci:

$ comm -3 <(ls -1 ~/Downloads/Pictures) <(ls -1 ~/Downloads/OldPictures)
Folder-1-File.PNG
Folder-2-File copy.PNG
photo 1 copy.PNG
photo 3.PNG

Notez l'indentation, qui vous montre quels fichiers sont uniques à chaque dossier. Dans l'exemple ci-dessus, le fichier "photo 1 copy.PNG" et "photo 3.png" sont alignés à droite, donc ils sont uniques au répertoire OldPictures, et Folder-1-File.PNG et Folder-2-File copy. PNG sont uniques au dossier Pictures original.

Cela fonctionne très bien sous Mac OS X, mais c'est une commande unix générique, donc vous devriez la trouver utilisable dans Linux et d'autres variantes. Si vous rencontrez des problèmes de compatibilité ou que vous trouvez cette commande inutilement complexe, essayez d'utiliser diff pour exécuter la même fonction.

Super truc trouvé par @climagic sur Twitter, @osxdaily est là aussi!