Bonjour,
S'il suffisait simplement de rechercher les doublons dans un même répertoire, ça serait facile .... mais ça n'est pas de ça qu'il s'agit
J'ai un répertoire qui contient plusieurs milliers de fichiers, répartis dans des centaines de sous-dossiers, pour un total de .... 300 Go environ.
Les fichiers sont de tout type.
Certains sont en double, en triple, et peut-être même +.
Le but du schmilblick est de les retrouver (automatiquement), et de les supprimer (manuellement).
La piste qui me passe par la tête est celle-ci :
1) lister tous les fichiers de tous les répertoire et sous-répertoire, avec le chemin d'accès complet.
* C'était tentant de voir du côté de "ls -R" , mais manque de bol le chemin d'accès serait indiqué pour chaque répertoire et non pour chaque fichier
* un basique "find *" fait donc mieux l'affaire. (Et évidemment on écrit le tout dans un fichier : "find * > liste.txt" )
(j'ai pas trouvé dans le man ls l'option miraculeuse qui permet d'afficher le chemin complet pour chaque fichier)
2) à partir de là j'aimerai que devant chaque ligne de liste.txt, ça soit indiqué la taille en octet.
là, ma mémoire flanche un peu. Comment on fait pour écrire quelque chose devant chaque ligne ? Et c'est quelle commande pour afficher la taille d'un fichier (un à un) en octet ?
Pour plus de commodité (voir plus loin), je pense qu'il faudrait séparer la taille et le chemin d'accès par un "," ou un ";".
3) ensuite il faudrait trier cette jolie longue liste (croissant ou décroissant, on s'en fout)
"sort -n liste.txt" ?
4) et, idéalement, il faudrait qu'à partir de liste.txt on puisse extraire les lignes dont la taille apparait en double (ou triple etc).
D'où l'utilité du "," ou ";" qui sépare la taille du chemin du fichier
Exemple : dans le fichier doublons.txt on aurait
213456 ; ./Documents/xxx/yyy/zzz/fichier-du-20110201.bla
213456 ; ./Documents/xxx/abc/mmm/oki/fichier-du-20110201.bla
213456 ; ./Documents/aaaaa/w/qsdf/fichier.bla
11209 ; ./Documents/prouik.plouf
11209 ; ./Documents/pppppppp/azeazea/prouiiiiik.plouf
etc....
A partir de là, c'est moi, manuellement, selon mon ressenti par rapport au nom du fichier et à son chemin, qui déciderai de copier telle ligne et de la coller dans un autre terminal avec un rm devant (pour l'effacer donc)
Note 1 :
Je me doute bien que la taille seule ne garantie pas que ce soit un doublons ou non. Mais j'en prends ma responsabilité et j'en fait mon affaire pour effacer manuellement (ou pas) les fichiers de mon choix
Note 2 :
J'ai oublié de préciser que je suis sous MAC OS X ;-)
(mais bon, ça ne devrait pas être très perturbant)
Note 3 :
Qui pourrait m'aider à pondre les lignes de commande adéquat pour ce dont j'ai besoin (ou ce que je souhaite faire) ?
Merci pour votre aide.