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

Anonim

Pour comparer et répertorier les différents contenus de deux répertoires sans la sortie supplémentaire que vous obtenez via des commandes telles que 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 comme il convient :

comm -3 <(ls -1 dossier1) <(ls -1 dossier2)

La sortie répertoriée sera les fichiers qui sont différents dans chaque dossier, avec des fichiers uniques au dossier1 alignés à gauche et des fichiers uniques au dossier 2 alignés à droite.

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

comm -3 <(ls -1 ~/Téléchargements/Images) <(ls -1 ~/Téléchargements/Anciennes Images)

La sortie peut ressembler à ceci :

$ comm -3 <(ls -1 ~/Téléchargements/Images) <(ls -1 ~/Téléchargements/AnciennesImages) Dossier-1-Fichier.PNG Dossier -2-Copie de fichier.PNG photo 1 copie.PNG photo 3.PNG

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

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

Grande astuce trouvée par @climagic sur Twitter, @osxdaily est là aussi !

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