Bonjour à tous, J'ai plusieurs reps du genre /mpeg, /video/, /photo qui contiennent d'autres reps qui contiennent des fichiers jpg, et mov (en fait des mpeg). Ces reps ont été remplit à fur et à mesure en copiant littéralement le contenu de la mémoire CF (card flash) de l'APN (appareil photo numérique) sur le disque dur. En résumé dans chacun de mes reps, il y des sous-reps créés par l'APN qui contiennent des images et des séquences mpeg. D'autres fichiers inutiles ont été créés par l'APN, que j'ai balayé avec un simple find ... -exec rm ... Ces centaines de reps (oui 1 ans de photos et de videos copiés sans vergogne sur le HD sans jamais avoir fait le moindre effort de faire un peu d'ordre. Mais puisque à chaque chose il y a une fin, je me suis décidé, il y a peu à m'organiser, sinon je cours droit vers la catastrophe le jour ou les diques durs sur lesquelles se trouvent ce trésor tomberotn en panne ou si involontairement je fais un rm -rf (que je fais d'ailleurs très souvent en créant et en detruisant des repertoires éphemeres). Une fois organisé, je pourrais envisager de faire des sauvegardes car dans l'état actuel c'est impossible, j'ai déjà saturé 3 disques durs de très grandes capacité chacun dédiés tous uniquement aux photos et video de la camera, ou regne un désordre chaotique comparable au climat qui régnait sur la terre quelques milliers voir millions d'années seulement. Alors j'ai déjà entamé et finit la première étape grâce au programme fdupes qui me permet de lister tous les doublons en fonctions des répértoires passés en paramètres. Les doublons sont repérés grâce à une comparaison de la taille, une comparaison de la signature md5 et une comparaison bit par bit. (ce qui accèlère énormément les clcules, on commence d'abord par éliminer les fichiers dont la taille ne correspond pas, et s'il s'agit de la meme taille alors on calcule la signature et seulement après un matching de la signature on fait la comparaison bit par bit). Ceci dit je me pose la question du pourquoi du calcul bit par bit et est-ce que le md5 n'aurait pas été suffisant pour la conclusion de l'égalité entre de fichiers. Je dispose au final d'une liste contenant des fichiers doublons avec leurs chemins groupés et séparés par des lignes vides. En voici un extrait: /photo/camera10/jvc/dcim/100jvcso/pic_0050.jpg /photo/camera9/jvc/dcim/100jvcso/pic_0049.jpg /photo/camera10/jvc/dcim/100jvcso/pic_0049.jpg /photo/camera_30/dcim/100jvcso/pic_0029.jpg /photo/camera900/dcim/100jvcso/pic_0029.jpg /photo/camera910/dcim/100jvcso/pic_0029.jpg /photo/camera_920/dcim/100jvcso/pic_0029.jpg /photo/camera810/sd_video/prg001/mov01a.mod /photo/camera800/sd_video/prg001/mov01a.mod Donc j'ai pour l'instant une liste des doublons dans un fichies que j'appelle doublons_list. Ce que je voudrais faire c'est de prendre le premier fichier (par exemple) de chaque groupe, de le renommer (afin qu'il n'écrase pas un autre fichier portant le meme nom) avec un nom du genre 000000001, 000000002, ... et le mettre dans un repertoire propre afin de tout simplement de faire des rm -rf sur tous ces reps, /video, /mpeg /photo dont je n'aurai plus aucun besoin, et de gagner beacoup en clarté d'une part et en espace disque d'autre part. Voilà, je m'excuse d'avoir été très long, c'était juste parce ce que je tiens vraiment à ces milliers de photos et de mpeg et je ne voudrais pas les perdre en expliquant mal ou peu le problème. Je pense à sed, awk et autres outils GNU, mais je n'ose pas en tant que débutant les appliquer sur un nombre aussi grand de fichier souvenir que je perdrais à tout jamais. Merci beaucoup pour une réponse ou des parties de réponse. a + -- Bayrouni
Hello Si je comprend bien, tu veux renommer/déplacer chaque image "doublonnée" ? Si tu fais un bête "sort -u" sur ton fichier doublons.file, tu te retrouveras avec une seule occurance par groupe d'images. Il suffit de boucler sur ces lignes et copier une à une tes images. Par exemple (en bash): count=0; grep -v ^$ doublons.file | sort -u | while read -r line; do idx=$(printf %08d $count); filename="${line%.*}"; fileext="${line##*.}"; echo -n "Copying $filename as $idx.$ext........."; cp "$line" "${count}.${ext}"; echo "done"; done En bloc, ça donnerait: count=0 grep -v ^$ doublons.file | sort -u | while read -r line; do count=$((count+1)) idx=$(printf %08d $count) filename="${line%.*}" # not used. just in case. fileext="${line##*.}" echo -n "Copying $filename as $idx.$ext........." cp "$line" "${count}.${ext}" echo "done" done ATTENTION: ce code n'est pas à utiliser tel quel; je ne l'ai pas testé, c'est juste pour donner une idée. Pour tester, mettre le code dans un fichier blahblah.sh en commentant la ligne "cp" et lancer par bash -x. Bayrouni a écrit :
Bonjour à tous,
J'ai plusieurs reps du genre /mpeg, /video/, /photo qui contiennent d'autres reps qui contiennent des fichiers jpg, et mov (en fait des mpeg).
Ces reps ont été remplit à fur et à mesure en copiant littéralement le contenu de la mémoire CF (card flash) de l'APN (appareil photo numérique) sur le disque dur.
En résumé dans chacun de mes reps, il y des sous-reps créés par l'APN qui contiennent des images et des séquences mpeg.
D'autres fichiers inutiles ont été créés par l'APN, que j'ai balayé avec un simple find ... -exec rm ...
Ces centaines de reps (oui 1 ans de photos et de videos copiés sans vergogne sur le HD sans jamais avoir fait le moindre effort de faire un peu d'ordre. Mais puisque à chaque chose il y a une fin, je me suis décidé, il y a peu à m'organiser, sinon je cours droit vers la catastrophe le jour ou les diques durs sur lesquelles se trouvent ce trésor tomberotn en panne ou si involontairement je fais un rm -rf (que je fais d'ailleurs très souvent en créant et en detruisant des repertoires éphemeres).
Une fois organisé, je pourrais envisager de faire des sauvegardes car dans l'état actuel c'est impossible, j'ai déjà saturé 3 disques durs de très grandes capacité chacun dédiés tous uniquement aux photos et video de la camera, ou regne un désordre chaotique comparable au climat qui régnait sur la terre quelques milliers voir millions d'années seulement.
Alors j'ai déjà entamé et finit la première étape grâce au programme fdupes qui me permet de lister tous les doublons en fonctions des répértoires passés en paramètres. Les doublons sont repérés grâce à une comparaison de la taille, une comparaison de la signature md5 et une comparaison bit par bit. (ce qui accèlère énormément les clcules, on commence d'abord par éliminer les fichiers dont la taille ne correspond pas, et s'il s'agit de la meme taille alors on calcule la signature et seulement après un matching de la signature on fait la comparaison bit par bit). Ceci dit je me pose la question du pourquoi du calcul bit par bit et est-ce que le md5 n'aurait pas été suffisant pour la conclusion de l'égalité entre de fichiers.
Je dispose au final d'une liste contenant des fichiers doublons avec leurs chemins groupés et séparés par des lignes vides. En voici un extrait: /photo/camera10/jvc/dcim/100jvcso/pic_0050.jpg
/photo/camera9/jvc/dcim/100jvcso/pic_0049.jpg /photo/camera10/jvc/dcim/100jvcso/pic_0049.jpg
/photo/camera_30/dcim/100jvcso/pic_0029.jpg /photo/camera900/dcim/100jvcso/pic_0029.jpg /photo/camera910/dcim/100jvcso/pic_0029.jpg /photo/camera_920/dcim/100jvcso/pic_0029.jpg
/photo/camera810/sd_video/prg001/mov01a.mod /photo/camera800/sd_video/prg001/mov01a.mod
Donc j'ai pour l'instant une liste des doublons dans un fichies que j'appelle doublons_list.
Ce que je voudrais faire c'est de prendre le premier fichier (par exemple) de chaque groupe, de le renommer (afin qu'il n'écrase pas un autre fichier portant le meme nom) avec un nom du genre 000000001, 000000002, ... et le mettre dans un repertoire propre afin de tout simplement de faire des rm -rf sur tous ces reps, /video, /mpeg /photo dont je n'aurai plus aucun besoin, et de gagner beacoup en clarté d'une part et en espace disque d'autre part.
Voilà, je m'excuse d'avoir été très long, c'était juste parce ce que je tiens vraiment à ces milliers de photos et de mpeg et je ne voudrais pas les perdre en expliquant mal ou peu le problème.
Je pense à sed, awk et autres outils GNU, mais je n'ose pas en tant que débutant les appliquer sur un nombre aussi grand de fichier souvenir que je perdrais à tout jamais.
Merci beaucoup pour une réponse ou des parties de réponse.
a +
Philippe Jacquot a écrit :
Si je comprend bien, tu veux renommer/déplacer chaque image "doublonnée" ? Si tu fais un bête "sort -u" sur ton fichier doublons.file, tu te retrouveras avec une seule occurance par groupe d'images. Il suffit de boucler sur ces lignes et copier une à une tes images. Par exemple (en bash): count=0; grep -v ^$ doublons.file | sort -u | while read -r line; do idx=$(printf %08d $count); filename="${line%.*}"; fileext="${line##*.}"; echo -n "Copying $filename as $idx.$ext........."; cp "$line" "${count}.${ext}"; echo "done"; done
En bloc, ça donnerait: count=0 grep -v ^$ doublons.file | sort -u | while read -r line; do count=$((count+1)) idx=$(printf %08d $count) filename="${line%.*}" # not used. just in case. fileext="${line##*.}" echo -n "Copying $filename as $idx.$ext........." cp "$line" "${count}.${ext}" echo "done" done
Merci pour ta réponse. J'ai appliqué fdupes sur toutes les partitions contenant les fichiers jpeg et mpeg, j'ai obtenu une très longue liste de fichiers à laquelle j'ai appliqué le bloc ci-dessus et j'ai effectivement obtenu une liste de tous ces fichiers renommés et sans doublons qui ont été copiés dans une grande partition. Un rm -rf /rep1 /rep2, ... va me faire beaucoup de plaisir. Maintenant je vais enfin pouvoir les sauvegarder , probablement sur des DVDs, car l'idée de sauvegarde de souvenir uniquement sur HD, commence vraiment à m'inquiéter. (car c'est irréversible). Encore merci pour ta réponse et bon week-end. -- Bayrouni
participants (2)
-
Bayrouni
-
Philippe Jacquot