Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1603 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  Logiciel effacant les fichiers doublon

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Logiciel effacant les fichiers doublon

n°699710
100top
Posté le 29-06-2005 à 00:55:53  profilanswer
 

bonjours,
en fait je voulais savoir s'il existait un logiciel qui permet d'effacer les fichiers qui sont en double dans un répertoire !?
genre dans un disque dur ya deux fois les memes dossiers avec les memes images et il le detecte et il demande de les effacers !
ca existe ou pas ?

mood
Publicité
Posté le 29-06-2005 à 00:55:53  profilanswer
 

n°699711
eL_Shaman_​__
Plop.
Posté le 29-06-2005 à 01:05:49  profilanswer
 

Tu arrives à avoir des dossiers avec plusieurs fichiers portant exactement le même nom ? Euh... Comment fais-tu ?!

n°699712
Pillow
'cos the trees won't talk
Posté le 29-06-2005 à 01:08:52  profilanswer
 

Je pense qu'il veut parler de fichiers identiques mais avec un nom différent :D  
 
Bref, un petit script bash avec md5sum + sort -n + cut/awk devrait faire l'affaire :o

n°700287
100top
Posté le 30-06-2005 à 12:04:43  profilanswer
 

Pillow a écrit :

Je pense qu'il veut parler de fichiers identiques mais avec un nom différent :D  
 
Bref, un petit script bash avec md5sum + sort -n + cut/awk devrait faire l'affaire :o


 
oui c'est ca ou alors dans des dossiers différents !
 
md5sum + sort -n + cut/awk ---> KESAKO ????  :ouch:

n°700291
jlighty
Posté le 30-06-2005 à 12:12:44  profilanswer
 

md5sum : calcul le hash md5 d'un fichier (c'est à dire le contenu du fichier est associé à une valeur. Si deux fichiers sont identiques, leurs hashs seront identiques.
ex: md5sum /etc/fstab -> "afa752dc62e45ca3d84c01b2550c009b  /etc/fstab"
 
sort -n : on regroupe la liste des fichiers par hash
donc la liste sera un groupage des noms des fichiers ayant un contenu identique.
cut et awk : traitement de cette liste
 
donc en gros voici le cheminement :
1- lister tous les fichiers (ex: find ./ -type f)
2- calculer leur hash (md5sum)
3- réagencer la liste dans le but d'avoir des groupes de fichiers ayant le même hash (sort -n)
4- script awk regardant si le fichier est un doublon, si oui le mettre dans une liste.
5- supprimer les fichiers contenus dans la liste (rm)


Message édité par jlighty le 30-06-2005 à 12:18:54
n°700298
Pillow
'cos the trees won't talk
Posté le 30-06-2005 à 12:28:03  profilanswer
 

Oui, c'est ça.
 
Bon, exemple à l'arrache, qui vaut ce qu'il vaut. À mettre dans un fichier (effacer_doublons.sh par exemple)

#! /bin/bash
 
if [ $# -gt 0 ]; then FILES="$1"; else FILES='*'; fi
 
md5sum $FILES | sort -n | while read l
do
  sum=$(echo $l | cut -d ' '  -f 1)
  if [ "X$sum" = "X$oldsum" ]
  then
      rm "$(echo "$l" | cut -c 35-)"
  fi
 
  oldsum="$sum"
done

Veuillez garder à l'esprit que ce script efface des fichiers sans rien demander, et que l'auteur (moi :o ) n'a pas dormi cette nuit, a plus de café que de sang dans les veines [:petrus75], a tapé ce post directement dans la fenêtre de réponse et n'a fait que quelques tests sommaires :o  :o S'il détruit votre disque dur ou tue votre chien, ce n'est pas ma faute :o  
 
Ceci étant dit, l'idée est là, il n'y a qu'à modifier selon les besoins. Pour utiliser:

$ chmod +x effacer_doublons
$ ./effacer_doublons            #efface tous les doublons dans le répertoire courant
$ ./effacer_doublons *.jpg      #efface tous les doublons dans le répertoire courant dont le nom se termine par .jpg

C'est à adapter (et à tester sur des dossiers dont vous avez une copie :o bis )


Message édité par Pillow le 30-06-2005 à 12:32:49
n°700312
jlighty
Posté le 30-06-2005 à 12:56:02  profilanswer
 

je pense que 100top ne comprendra pas le déroulement du script donc je vais essayer de lui expliquer :
 

Code :
  1. if [ $# -gt 0 ]; then FILES="$1"; else FILES='*'; fi


On regarde le nombre de paramètres envoyés au script, si aucun paramètre n'est envoyé, par défaut on examine tous les fichiers du répertoire courant (*)

Code :
  1. md5sum $FILES | sort -n | while read l


on calcul le hash des fichiers puis on les regroupe par hash identique (sort -n) et on les analyse.

Code :
  1. do
  2.   sum=$(echo $l | cut -d ' '  -f 1)


on récupère le hash qui est en fait le premier champ dans la chaine de caractère retourné par md5sum. Ex :
"afa752dc62e45ca3d84c01b2550c009b  /etc/fstab"  on récupère
"afa752dc62e45ca3d84c01b2550c009b"
 

Code :
  1. if [ "X$sum" = "X$oldsum" ]
  2.   then
  3.       rm "$(echo "$l" | cut -c 35-)"
  4.   fi
  5.   oldsum="$sum"
  6. done


Un peu d'algorithmique :  
on compare la valeur du hash avec celle du hash précédent, si les deux valeurs sont identique ("X$sum"="X$oldsum" ) alors on supprime le fichier.
Le nom du fichier est récupère de la chaine de caractère : sachant que la taille de la valeur du hash fait 35 caractères, on récupère les caractères après le 35ème caractères -> on a ainsi le nom du fichier.
La valeur hash courant devient la valeur hash précédente

Code :
  1. "oldsum="$sum"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  Logiciel effacant les fichiers doublon

 

Sujets relatifs
apache ne peut modifier les fichiers upld par ftp, ma solution est ok?[Apache] Dynamic Vhost et fichiers de logs
A la recherche d un logiciel open source gestion mailing listeLogiciel d'XP
[Debian] Woody : noms de fichiers incomplets ?!RMLL à Dijon 05/07 au 09/07
le logiciel eagle usb[Mac OS X] Rechercher un terme dans des fichiers
Emplacement fichiers dans un FHSlister seulement les fichiers lourds
Plus de sujets relatifs à : Logiciel effacant les fichiers doublon


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR