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/11/2019, à 18:20

DonutMan75

[RESOLU] "Décimer" un répertoire

Bonsoir à tous,
j'ai un répertoire contenant plein d'images :

$ ll ./jerk/
Nmax_10_SA_0001.png
Nmax_10_SA_0002.png
Nmax_10_SA_0003.png
Nmax_10_SA_0004.png
etc...

Je souhaiterais créer un deuxième répertoire contenant des liens symboliques vers une décimation de ces images (par exemple une image sur deux). Mais la numérotation doit être continue ! Ainsi, je souhaiterais par exemple avoir :

$ ll ./jerk2/
Figure_0001.png > ../jerk/Nmax_10_SA_0001.png
Figure_0002.png > ../jerk/Nmax_10_SA_0003.png
Figure_0003.png > ../jerk/Nmax_10_SA_0005.png
Figure_0004.png > ../jerk/Nmax_10_SA_0007.png

J'ai tenté le code suivant qui ne se déroule pas... et j'ai prêté mon bouquin bash sad(((

#! /bin/sh
p=1
k=0

for f in ../jerk/Nmax_10_SA*png; do  
        echo $f
        [ $k -eq 0 ] && { fout=$(printf "%04d" $p) ; echo ln -s "$f" "Figure_${p}.png" ; p=$((p+1)) } ; 
        [ $k -eq 0 ] && k=1 ;
        [ $k -eq 1 ] && k=0 ;
done
$ ./populate.sh 
./populate.sh: line 10: syntax error near unexpected token `done'
./populate.sh: line 10: `done'

Une âme charitable pourrait-elle m'aider ? smile

Pour info, ce serait pour faire une petite animation pour une présentation mais les fichiers sont trop nombreux et l'animation patine un peu...

Merci d'avance big_smile

Donut

Dernière modification par DonutMan75 (Le 23/11/2019, à 09:20)

Hors ligne

#2 Le 22/11/2019, à 18:33

pingouinux

Re : [RESOLU] "Décimer" un répertoire

Bonjour,
Il faut un ; avant la dernière } :

        [ $k -eq 0 ] && { fout=$(printf "%04d" $p) ; echo ln -s "$f" "Figure_${p}.png" ; p=$((p+1)); } ;

Édité :
Tu veux sans doute ceci

#! /bin/bash
p=0
k=0

for f in ../jerk/Nmax_10_SA*png; do  
        echo "$f"
        (( !(k%2) )) && { printf -v fout "%04d" $((++p)); echo ln -s "$f" "Figure_${fout}.png"; }
        ((k++))
done

Dernière modification par pingouinux (Le 22/11/2019, à 18:47)

Hors ligne

#3 Le 23/11/2019, à 09:19

DonutMan75

Re : [RESOLU] "Décimer" un répertoire

Salut Pingouinux,
super merci pour ton oeil acéré et aussi pour ta solution clef en main !!
Les (( tests logiques )) et le ((k++)) semblent être une spécificité du bash ?

Merci encore quoi qu'il en soit smile

Bonne journée à tous

Donut

Hors ligne

#4 Le 23/11/2019, à 09:37

pingouinux

Re : [RESOLU] "Décimer" un répertoire

DonutMan75 #3 a écrit :

Les (( tests logiques )) et le ((k++)) semblent être une spécificité du bash ?

Oui.

Hors ligne