J'essaie de trouver des diff
s entre tous les fichiers de mêmes noms sur deux copies d'un répertoire (disons un travail et une sauvegarde). Par exemple, je peux diff
deux fichiers du même nom dans les deux:
> diff d1/f.cpp d2/f.cpp
ou je peux trouver des différences entre les répertoires:
> diff d1 d2
mais comment puis-je trouver des différences entre les *.cpp
fichiers uniquement?
> diff d1/*.cpp d2/*.cpp
ne semble pas fonctionner (pour des raisons évidentes).
[Il est probablement facile à résoudre avec des boucles, mais j'essaie de trouver un moyen plus élégant]
echo "${file##*/}";
avant ladiff
commande, donc on sait quels fichiers sont réellement comparés. De plus, comme mentionné dans la réponse de @ Rinzwind, cette méthode ne couvre pas le cas où la liste des fichiers n'est pas exactement la même dans les deux répertoires.diff -qr {DIR1} {DIR2}
fait tous les fichiers dans les deux répertoires.q
ne montre que des différencesr
fait récursif. Laissez-le de côté si vous n'en avez pas besoinVous ne pouvez pas dire
diff
directement d'utiliser des caractères génériques, mais vous pouvez ajouter:pour exclure des fichiers. Donc, si vous voulez seulement que
*.cpp
la méthode la plus simple soit de créer un fichier texte qui répertorie tous les fichiers qui ne le sont pas*.cpp
. Vous pouvez le faire avec la commande suivante:ls -I "*.cpp" > excluded_files
où l'-I "*.cpp"
argument ignore tous les fichiers .cpp. Notez que les guillemets sont nécessaires.la source
Quelque temps après avoir posé la question, j'ai découvert l'
meld
utilitaire diff et je l'utilise depuis. Il s'agit d'un excellent programme basé sur une interface graphique qui rend la comparaison et la fusion entre les fichiers et le répertoire une tâche très facile. Il effectue des comparaisons à deux ou trois voies.Plus précisément, il répond à ma question d'origine en ce qu'il vous montre une comparaison codée par couleur du contenu du répertoire et vous permet de comparer des fichiers spécifiques en double-cliquant sur le nom du fichier.
Si l'on a besoin de plus d'une comparaison à trois, alors
gvimdiff
(basé sur l'vim
éditeur) est aussi un excellent qui fournit cette fonctionnalité.la source
Il existe une solution légère pour cela:
diff dir1 dir2 | vim -R -
à la coquilleIl ajoutera des plis et une comparaison côte à côte pour les fichiers modifiés.
la source