Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/05/2014, à 17:35

BTISSAM bety

deplacement d'images

j"essaye d'eparpiller aleatoirement les fragments d'une image déja decoupés  dans des dossiers différents j'essaye d'utiliser la commande mv mais j'arrive pas au resultat espéré

Hors ligne

#2 Le 23/05/2014, à 02:56

bishop.sad.clown

Re : deplacement d'images

Peux-tu developper un peu ( en fait avec un max de précisions ) le but que tu cherches à atteindre ?

Parceque là ta requête est un poil trop succinte...

=· /


@++ , Rob'
→ Trusty x64
Je n'ai pas toujours les réponses mais je les cherche en même temps que vous... =· þ

Hors ligne

#3 Le 23/05/2014, à 10:09

BTISSAM bety

Re : deplacement d'images

D'accord smile
L'idée est la suivante:
j'ai un ensemble des images que je veux les déplacer l'une après l'autre dans des différents répertoires d'une façon aléatoire à condition qu'une unique image soit déplacée dans un répertoire différent (je peux pas avoir deux images dans le même répertoire qui porte le même nom par exemple: image_00.jpeg et image_01.jpeg ne doivent plus être dans le même répertoire) .
j'espère que j'ai bien expliqué l'idée, merci d'avance!!

Hors ligne

#4 Le 23/05/2014, à 15:40

bishop.sad.clown

Re : deplacement d'images

désolé, j'n'arrive pas à saisir ce que tu cherchces à faire...

=· (

j'passe la main...


@++ , Rob'
→ Trusty x64
Je n'ai pas toujours les réponses mais je les cherche en même temps que vous... =· þ

Hors ligne

#5 Le 23/05/2014, à 18:18

pingouinux

Re : deplacement d'images

Voici une méthode (en sh) pour déplacer aléatoirement une liste d'images dans des répertoires, à raison d'une image par répertoire.
Il faut :
1) un fichier contenant les noms des images (un par ligne).

$ cat /tmp/images
/tmp/tst/image_00.jpeg
/tmp/tst/image_01.jpeg
/tmp/tst/image_02.jpeg
/tmp/tst/image_03.jpeg

2) un fichier contenant les noms des répertoires (un par ligne)

$ cat /tmp/reps
/tmp/tst/rep_00
/tmp/tst/rep_01
/tmp/tst/rep_02
/tmp/tst/rep_03
/tmp/tst/rep_04
/tmp/tst/rep_05

Le nombre d'images ne doit pas être supérieur au nombre de répertoires (il faudrait faire un test)

#!/bin/sh

# Calcul du nombre d'images
nb_img=$(wc -l /tmp/images | awk '{print $1}')

# Le fichier contenant les noms des répertoires est trié de façon aléatoire
# et on en garde un nombre de lignes égal au nombre d'images (fichier /tmp/reps_alea)
sort -R /tmp/reps | head -$nb_img >/tmp/reps_alea

# Génération d'un fichier /tmp/mvs (même nb de lignes que les précédents) constitué de mv à chaque ligne
for k in $(seq $nb_img); do echo "echo mv"; done >/tmp/mvs

# Concaténation des 3 fichiers, pour générer les commandes mv (fichier /tmp/move)
paste /tmp/mvs /tmp/images /tmp/reps_alea >/tmp/move

# Exécution du fichier obtenu
. /tmp/move

Si le résultat est correct, remplacer do echo "echo mv" par do echo "mv", et relancer le script

Attention : Cette méthode ne fonctionne que si les noms des fichiers et des répertoires ne contiennent pas d'espaces ou de tabulations.

Hors ligne

#6 Le 23/05/2014, à 21:13

BTISSAM bety

Re : deplacement d'images

mercii bien pour votre aide smile

Hors ligne

#7 Le 24/05/2014, à 07:40

pingouinux

Re : deplacement d'images

Un peu plus simple, et les espaces dans les noms de fichiers et de répertoires sont maintenant pris en compte.

#!/bin/sh

# Calcul du nombre d'images
nb_img=$(wc -l /tmp/images | awk '{print $1}')

# Le fichier contenant les noms des répertoires est trié de façon aléatoire
# et on en garde un nombre de lignes égal au nombre d'images (fichier /tmp/reps_alea)
# sort -R /tmp/reps | head -$nb_img >/tmp/reps_alea
shuf -n $nb_img /tmp/reps >/tmp/reps_alea

# On insère au début de chaque ligne : mv "
#        et à la fin de chaque ligne : "
sed -i 's/^/mv "/;s/$/"/' /tmp/images

# On insère au début et à la fin de chaque ligne : "
sed -i 's/^/"/;s/$/"/' /tmp/reps_alea

# Concaténation des 2 fichiers, pour générer les commandes mv (fichier /tmp/move)
paste /tmp/images /tmp/reps_alea >/tmp/move

# Exécution du fichier obtenu
. /tmp/move

Édité : Simplification du tirage aléatoire (ancienne ligne laissée en commentaire)

Dernière modification par pingouinux (Le 25/05/2014, à 06:37)

Hors ligne