J'ai deux répertoires avec la même liste de fichiers. J'ai besoin de comparer tous les fichiers présents dans les répertoires à l'aide de l' diff
commande. Est-il une simple option de ligne de commande pour le faire, ou ce que je dois écrire un script shell pour obtenir la liste des fichiers, puis itérer à travers eux?
Réponses
Trop de publicités?diff
ne peuvent pas seulement de comparer deux fichiers, il peut, à l'aide de la -r
option, à pied tout le répertoire des arbres, de manière récursive, à la vérification des différences entre les sous-répertoires et les fichiers qui se produisent à des points comparables dans chaque arbre.
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
Si c'est GNU diff alors vous devriez juste être capable de le diriger vers les deux répertoires et utilisez l'option-r.
Sinon, essayez d'utiliser
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
N. B. Comme indiqué par Dennis dans la section des commentaires, vous n'avez pas besoin de faire de la substitution de commande sur la ls. J'ai fait cela depuis si longtemps que je suis plutôt de faire cela sur le pilote automatique et la substitution de la commande j'ai besoin d'obtenir ma liste de fichiers à des fins de comparaison.
Aussi j'ai oublié d'ajouter que je ne '\ls' pour désactiver temporairement mon alias de la commande ls pour GNU ls de sorte que je perds la couleur de mise en forme des informations à partir de la liste retournée par GNU ls.