Comment trouver des fichiers qui sont des doublons de fichiers dans un certain dossier?

0

Je dois supprimer les doublons de mon ordinateur, car j'ai environ 5 copies de chaque photo, dans des dossiers différents. Je veux supprimer les photos qui apparaissent également dans un certain dossier, après quoi j'en ai trié plusieurs. Je veux qu'il garde les fichiers dans le dossier, ainsi que les doublons qui n'apparaissent pas également dans ce dossier. Ex: je veux conserver les fichiers sur le bureau.

  • C: / Bureau / fichier1, fichier3
  • C: / Desktop / 2016 / file2
  • C: / Sauvegarde / fichier1 (2), fichier4
  • C: / Backup2 / file1 (3), fichier2 (2), fichier4 (2)

Le résultat devrait être

  • C: / Bureau / fichier1, fichier3
  • C: / Desktop / 2016 / file2
  • C: / Sauvegarde / fichier4
  • C: / Backup2 / file4 (2)
Cézieu
la source
Qu'as-tu déjà essayé?
slhck
Recherche de doublons de CCleaner
cezieu

Réponses:

0

En supposant que dir1vous soyez le chemin que vous voulez rechercher et dir2le dossier en question :

find dir1 -not -path "dir2/*" | grep -F -f <(ls -1 dir2) | parallel rm

ou, si vous avez seulement xargset non parallel:

find dir1 -not -path "dir2/*" | grep -F -f <(ls -1 dir2) | xargs rm

Exemple:

Supposons que vous vouliez regarder dans le C:lecteur et que le dossier en question se trouve C:\Desktopsur cygwin :

find /cygdrive/c -not -path "/cygdrive/c/Desktop/*" | grep -F -f <(ls -1 /cygdrive/c/Desktop) | parallel rm

sur Git pour Windows :

find /c -not -path "/c/Desktop/*" | grep -F -f <(ls -1 /c/Desktop) | parallel rm

sur WSL :

find /mnt/c -not -path "/mnt/c/Desktop/*" | grep -F -f <(ls -1 /mnt/c/Desktop) | parallel rm
simlev
la source
1
N'a pas fonctionné comme prévu ... (je suis probablement en faute ici). J'ai utilisé cygwin et $ find / cygdrive / c / dédup-pas-path "/ cygdrive / c / dédup / test / *" -delete | grep -F -f <(ls -1 / cygdrive / c / dedup / test) et il a supprimé tous les fichiers sauf ceux de / test (le "dossier
défini
Non, j'ai commis une erreur en plaçant l' -deleteoption avant grep: de cette façon, tous les fichiers trouvés sont supprimés avant que le filtre ne soit appliqué! Cela aurait dû être find dir1 -not -path "dir2/*" | grep -F -f <(ls -1 dir2) | parallel rm {}.
simlev
oh, maintenant le test
cezieu
Nous avons eu pas mal de difficultés à installer parallèle et tout ce dont il a besoin, mais maintenant cela fonctionne: 3! Merci beaucoup !
Cezieu
@cezieu Désolé d'avoir posté une réponse dangereuse au départ, heureusement que vous l'avez testée. parallelfait la même chose que xargs, qui est généralement disponible par défaut, vous ne devriez donc pas vous en préoccuper.
simlev