2014-09-02 6 views
1

Comment comparer deux répertoires et des fichiers de liste uniques à un répertoire et pas à un autre?rechercher un fichier unique au dossier

Je dois comparer deux répertoires et je veux trouver des fichiers qui ne sont pas des doublons. Le nom de fichier est suffisant pour cette tâche. Je ne suis pas vraiment préoccupé par le contenu.

J'ai beaucoup de bibliothèques iPhoto et je cherche à obtenir les fichiers uniques d'eux afin que je puisse les combiner en une seule bibliothèque. Je suis dans le contenu du paquet, regardant à travers les répertoires, et je suis seulement intéressé par les originaux, pas le modifié. Probablement 99% + seront des doublons avec seulement quelques douzaines éloignées uniques d'une liste de fichiers 20K +. S'il existe déjà une application qui le fait déjà, ce serait génial, mais tout ce que j'ai vu (applications et scripts) ne cherche qu'à fournir des doublons.

Répondre

1

Vous pouvez utiliser comm:

comm <(cd path1 ; ls) <(cd path2 ; ls) 

Les fichiers contenus dans la première colonne sont uniques à chemin1, les fichiers dans la 2ème colonne sont uniques à path2, les fichiers dans la 3ème colonne sont communs dans les deux chemins. Pour supprimer les deux premières colonnes, utilisez

comm -12 ... 

Pour inspecter le sous-arbre entier, utiliser find au lieu de ls, mais vous devez trier la sortie:

comm <(cd path1 ; find | sort) <(cd path2 ; find | sort) 
+0

Merci, ce qui est presque exactement ce que je dois . (La vie a entravé ce projet, et maintenant je suis de retour dessus.) Une question. Comment est-ce que je peux obtenir ceci pour marcher la structure de répertoire? J'ai des dizaines de répertoires enfouis et cela me prendra des mois pour faire chacun à la fois. – dave

+0

@dave: Vérifiez la mise à jour. – choroba

+0

J'ai copié votre code et il jette une erreur sur la recherche 'comm <(cd/volumes/sauvegarde/laptops/idesigner-2009/Images/iPhoto \ Bibliothèque/Originals; trouver | sort) <(cd/Volumes/Mon \ Passport \ 1/Seagate/iPhoto \ Bibliothèque/Originals; find | sort) Utilisation: find [-H | -L | -P] [-EXdsx] [-f chemin] chemin ... [expression] find [-H | -L | -P] [-EXdsx] -f chemin [chemin ...] [expression] utilisation: find [-H | -L | -P] [-EXdsx] [-f chemin] chemin ... [expression] find [-H | -L | -P] [-EXdsx] -f chemin [chemin ...] [expression] ' – dave

Questions connexes