Re: Éliminer des fichiers doublons
Yves de Brauer <[email protected]>
| Newsgroups | gmane.linux.mandrake.expert.french |
|---|---|
| Message-ID | <[email protected]> |
François-Xavier Pasquier a écrit :
> Pas de soucis :)
>
> find -> trouve tout ce qui existe à partir d'un point donné
> (find ./plop pour modifier le point de départ)
> -type f -> on ne veut que des fichiers
> -print0 -> option pour séparer les fichiers par des \0 plutôt que des \n ce
> qui est bien pratique avec des fichiers qui ont des noms bizarres (utf8,
> caractères accentués, etc ...)
>
> on envoie ça dans xargs. Son boulot à lui c'est de prendre ce qu'il y a en
> entrée standard (dans le pipe) et de l'envoyer dans la commande qui suit.
> En gros je veux faire 'md5sum' sur chaque fichiers que find à trouvé.
> -0 -> option pour dire à xargs que les fichiers sont séparé par des \0 (le
> pendant de -print0 du find, s'bien pratique ca.)
> -i -> pour interactive, ca veut dire que je place l'argument ou je veux.
> l'argument c'est {}, c'est chaque fichier trouvé.
>
> donc
> xargs -0 -i md5sum {} 2>/dev/null -> on applique md5sum à chaque fichier.
>
> après j'ai repris ce que tu avais trouvé, on trie
> sort
> on élimine les fichiers redondants (qui ont le même checksum),
> uniq -w 32 -> il vérifie que sur les premiers 32 caractères ce qui veut dire
> que 2 fichiers qui n'ont pas le même nom mais le même contenu seront considérés
> comme redondant (on en garde qu'un.)
>
> on envoie ca dans 'awk'. je vais pas décrire awk, il me faudrait une semaine,
> mais en gros, comme je connaissais pas 'cut', je l'ai utilisé ici pour
> récupérer le nom du fichier.
> $2 -> c'est le nom du fichier (2ième champ dans la ligne)
> et le print me permet d'écrire la ligne suivante :
> mv myfile ~/fichiers_uniques
>
> Une fois que j'ai écris cette ligne, il faut l'exécuter !
> On envoie tout dans 'sh'
>
> CQFD.
>
> find -type f -print0 | xargs -0 -i md5sum {} 2>/dev/null | sort | uniq -w 32 |
> awk '{ print "mv "$2" ~/fichiers_uniques" }' | sh
>
> Et pour ta question, le nom du fichier n'est pas pris en compte dans l'analyse,
> uniquement le checksum, qui symbolise le contenu.
>
> --
> FX
>
Merci vraiment beaucoup pour toutes ces explications bien détaillées. Je
vais faire des tests ce WE.
Yves
message-footer.txt
(text/plain, 150 B)
================================= http://www.mandriva.com/linux/ Services & cert. hw on http://store.mandriva.com/ =================================