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)

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.