2 votes

Comparer deux structures de dossiers et répertorier les fichiers qui existent dans les deux, mais qui sont différents

J'ai un dossier de travail local qui reflète une partie du dossier public d'un serveur web. Je travaille généralement dans la copie locale, puis j'envoie automatiquement les fichiers sur le serveur lors de l'enregistrement. Le problème, c'est que j'ai réalisé récemment que beaucoup de fichiers dans mes fichiers locaux semblent être obsolètes, donc à chaque fois que j'enregistre et envoie un fichier, je risque potentiellement d'écraser une version plus récente. C'est évidemment problématique, donc j'aimerais mettre à jour tous les fichiers obsolètes locaux.

La meilleure façon à laquelle je pense pour faire cela est de télécharger l'intégralité du dossier public tel qu'il est et de comparer chaque fichier avec ma copie locale, en passant manuellement en revue les fichiers avec des différences (en les comparant dans Visual Studio Code). Le dossier serveur public contient environ 5 Go de données supplémentaires que je n'ai pas besoin (ou que je ne veux pas) dans mon dossier de travail local, donc je devrais filtrer les éléments indésirables en premier lieu.

En d'autres termes, je cherche un moyen (interface graphique ou terminal) de faire ce qui suit :

  • Donner en entrée deux répertoires de premier niveau
  • Parcourir récursivement les deux répertoires et sélectionner les fichiers qui existent dans les deux (au même emplacement relatif)
  • Comparer chaque ensemble de fichiers appariés et lister ceux où les deux fichiers ne sont pas identiques

Y a-t-il un moyen raisonnablement non complexe de faire cela?

8voto

nohillside Points 82672

Vous pouvez utiliser diff pour cela après avoir téléchargé le dossier public :

diff -q -r dossier-de-travail dossier-public

Cela vous donnera la liste des fichiers qui sont différents, omettez -q pour également afficher une liste des différences réelles.

Pour supprimer la liste des fichiers uniquement disponibles dans dossier-public, vous pouvez facilement les filtrer via grep :

diff -q -r dossier-de-travail dossier-public | grep -v '^Seulement dans dossier-public'

(assurez-vous de remplacer la partie dossier-public par le nom réel dans les deux occurrences)

0 votes

Mais cela ne va-t-il pas également répertorier tous les fichiers qui existent dans public-folder mais pas dans working-folder ? C'est ce que j'essaie d'éviter, car cela pourrait probablement correspondre à près de 50 000 fichiers.

0 votes

@JanusBahsJacquet Ah, je l'ai raté. Voir la modification. Pas élégant, mais en tant qu'exercice ponctuel, ça devrait fonctionner.

0 votes

Ah, intelligent, n'avez pas pensé à le passer comme ça! C'est en effet ponctuel, donc pas besoin d'élégance. Mais... est-ce que "Seulement dans" fait quelque chose dans grep? Est-ce une sorte de syntaxe grep spéciale que je n'ai jamais vue auparavant?

4voto

Douglas Points 10417

Alors que je suis un grand partisan de l'utilisation d'outils intégrés (+1 pour la réponse de nohillside) plutôt que de chercher l'application la plus proche, de temps en temps je trouve des applications vraiment précieuses. Dans ce cas, j'ai trouvé une application de différenciation et de fusion graphique appelée Meld.

Meld est un outil visuel de différenciation et de fusion destiné aux développeurs. Meld vous aide à comparer des fichiers, des répertoires et des projets versionnés. Il propose des comparaisons à deux ou trois voies à la fois pour les fichiers et les répertoires, et prend en charge de nombreux systèmes de contrôle de version populaires.

Capture d'écran de Meld

Meld est probablement trop puissant pour ce que vous cherchez à faire, mais pas au point de rendre le logiciel difficile à utiliser. Le meilleur c'est que c'est gratuit (comme une bière).

0 votes

Pouvez-vous ajouter des précisions concernant toute affiliation (ou non) avec l'application? Merci.

0 votes

@NimeshNeema, les mots « J'ai trouvé... » impliquent directement que je n'ai rien à voir avec eux autre que de les avoir "trouvés" et de les recommander maintenant.

0 votes

Désolé de ne pas avoir été attentif en lisant. J'ai aussi trouvé l'outil utile. Merci de l'avoir partagé.

0voto

stapoz Points 1

Essayez DirEqual. Il a une interface très intuitive.

0 votes

Pouvez-vous fournir un lien vers ce que vous entendez par "DirEqual"?

0 votes

google.com/search?q=direqual mais je viens de découvrir que c'est seulement pour Mac (pas de version Windows).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X