Il existe une flotte de logiciels qui font cela, par exemple incomparable . Ce n'est pas un logiciel gratuit, mais il dispose d'une version d'essai gratuite et pour une seule utilisation, cela devrait suffire.
Vous pouvez également utiliser diff
dans le terminal pour rechercher ces fichiers comme ceci :
diff --brief -r dir1/ dir2/
Vous obtiendrez un résultat similaire à celui-ci :
Only in dir1/dir11/dir111: file4
Only in dir2/: file2
Only in dir1/: file3
Vous pouvez ensuite utiliser cut et sed pour obtenir les fichiers manquants et leurs chemins :
| cut -c 9- | sed 's/\/: /\//g' | sed 's/: /\//g'
Et ensuite vous pouvez utiliser xargs et cp pour copier les fichiers comme ceci :
xargs -I{} cp "{}" dir3
Donc la ligne entière serait
diff --brief -r dir1/ dir2/ | \
cut -c 9- | sed 's/\/: /\//g' | sed 's/: /\//g' | \
xargs -I{} cp "{}" dir3
Veillez simplement à remplacer dir1 et dir2 par les répertoires dans lesquels vous souhaitez effectuer des recherches et dir3 par le répertoire de sortie.
Si vous souhaitez conserver la structure du dossier pour les fichiers copiés, utilisez la fonction suivante ditto
au lieu de cp comme ceci :
diff --brief -r dir1/ dir2/ | \
cut -c 9- | sed 's/\/: /\//g' | sed 's/: /\//g' | \
xargs -I{} ditto "{}" dir3