GNU/Linux >> Tutoriels Linux >  >> Linux

Linux :comparer la structure des répertoires sans comparer les fichiers

Ce qui suit (si vous substituez le premier répertoire au répertoire1 et le second au répertoire2) devrait faire ce que vous recherchez et rapidement :

find directory1 -type d -printf "%P\n" | sort > file1
find directory2 -type d -printf "%P\n" | sort | diff - file1

Le principe fondamental est qu'il imprime tous les répertoires, y compris les chemins de sous-répertoires relatifs aux répertoires de base répertoireN.

Cela pourrait tomber (produire une sortie bizarre) si vous avez des retours chariot dans certains noms de répertoires mais pas dans d'autres.


vimdiff <(cd dir1; find . | sort) <(cd dir2; find . | sort)

vous donnera un bel affichage côte à côte des deux hiérarchies de répertoires avec toutes les sections communes pliées.


J'utilise habituellement rsync pour cette tâche :

rsync -nav --delete DIR1/ DIR2

SOYEZ TRÈS PRUDENT toujours utiliser le -n , alias --dry-run , option, ou il synchronisera (changera le contenu de) les répertoires.

Cela comparera les fichiers en fonction des heures et des tailles de modification des fichiers... Je pense c'est ce que tu veux vraiment, ou du moins ça ne te dérange pas si ça fait ça ? J'ai l'impression que tu veux juste que ça se passe plus vite , pas que vous en ayez besoin pour ignorer la différence entre le contenu des fichiers. Si vous voulez qu'il ne répertorie pas les fichiers différents avec des noms identiques, je pense que l'ajout du --ignore-existing l'option le fera.

Sachez également que ne pas mettre un / à la fin de DIR1 le fera comparer le répertoire DIR1 avec le contenu de DIR2 .

La sortie finit par être un peu détaillée, mais elle vous montrera quels fichiers/répertoires diffèrent. Fichiers/répertoires présents dans DIR2 et non en DIR1 sera précédé du mot deleting .

Pour certaines situations, la réponse de @ slartibartfast peut être plus appropriée, bien que vous deviez supprimer le -type d option pour activer la liste des fichiers non-répertoire. rsync sera plus rapide si vous avez un nombre important de fichiers/répertoires à comparer.


Linux
  1. Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

  2. Nombre maximum de fichiers/répertoires sous Linux ?

  3. commande linux pour vider tous les fichiers d'un répertoire

  4. Comment comparer au mieux d'énormes arborescences de répertoires

  5. Comment comparer des fichiers binaires sous Linux ?

Comment lister les fichiers de manière récursive sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Compter le nombre de fichiers dans un répertoire sous Linux

Structure de répertoire Linux expliquée pour les débutants

Comment compter le nombre de fichiers dans un répertoire sous Linux

Comparer deux fichiers dans un terminal Linux