• [^] # Re: celui-ci devrait mieux fonctionner

    Posté par . En réponse au message bash recuperer nom de plusieurs fichiers incrémentés. Évalué à 1. Dernière modification le 12 février 2019 à 07:37.

    Le contenu de monScript.sh :

    #!/bin/bash
    extension="png" # Le nom d'extension SANS le point qui la précède
    nomRepert="/nom/du/répertoire" # ...dans lequel se trouvent les fichiers à traiter
    tablFichs=( "$nomRepert/"*"$extension" )
    tablFichs=( "${tablFichs[@]##*\/}" )
    tmpIFS="$IFS"
    IFS=$'\n'
    maRegex='([0-9]{1,}\.'"$extension"')$'
    tablUniqs=($( \
    for fich in "${tablFichs[@]}"; do
     [[ "$fich" =~ $maRegex ]] && \
     printf "%s\n" "${fich//${BASH_REMATCH[1]}/}"
    done | sort -u
    ))
    for debutNom in "${tablUniqs[@]}"; do
     chiffres=""
     maRegex="^$debutNom"'([0-9]{1,})\.'"$extension"
     for fich in "${tablFichs[@]}"; do
     [[ "$fich" =~ $maRegex ]] && \
     chiffres+="${BASH_REMATCH[1]}"$'\n'
     done
     chiffres="$(sort -n <<< $chiffres | tr '\n' ',')"
     printf "%s\n" "$debutNom[${chiffres:1:-1}]"
    done
    IFS="$tmpIFS"

    La liste des noms des fichiers pour le test :

    autrefichier_4.png
    autrefichier_5.png
    avec espace1.png
    avec espace2.png
    avec espace3.png
    fic77.pnget445.png
    fich77a7888.png
    fich77a7.png
    fichier42.png
    un77autre_0.png
    un77autre_3.png
    unautre_055.png
    unautre_155.png
    unautre_50.png
    unautre_56.png

    Le retour du script en fonction de la liste ci-dessus :

    autrefichier_[4,5]
    avec espace[1,2,3]
    fic77.pnget[445]
    fich77a[7,7888]
    fichier[42]
    un77autre_[0,3]
    unautre_[50,055,56,155]

    ... et dans ce royaume, ceux qui y voient un peu plus clair sont parfois très mal vus.