Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplacer le nom d'une extension

    6 novembre 2019 à 16:03:57

    Bonjour à tous,

    Je voudrais savoir si il est possible de remplacer le nom d'une extension par une autre. La difficulté est que le nom de l'extension n'est pas connues.

    La seul chose que je sais par rapport à elle c'est que l'extension est un numéro. 

    Le must du must serais de comparer le numéro de l'extension pour savoir lequel est le plus élevée. 

    Si vous avez des idée :)

    • Partager sur Facebook
    • Partager sur Twitter
      6 novembre 2019 à 16:47:34

      salut,

      de quoi parles-tu ?

      il y a sûrement longtemps que tu es dessus, parce que tu as l'air de savoir de quoi il s'agit.
      nous, on arrive, on ne sait pas.

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        7 novembre 2019 à 12:13:41

        Salut, 

        Je vais donc essayer d'être plus précis. 

        En gros des backups sont fait et porte le nom de par exemple

        SR_ATLS.115586, SR_ATLS.118586, SR_ATLS.116586

        L'extension sers à dater le backup plus l'extension est grande moin le backup est ancien. 

        J'ai trouver comment garder l'extension pour la comparer dans un script

        extension=${line##*.}

        Donc ça c'est fait.

        Je suis sur autre chose, en faite il y as des milliers de backup. Pour tous les trouver j'utilise une commande find coupler avec une boucle et j'en déduit l'extension la plus récente de cette manière.

        i=0
        compareExt=0
        lastVersion=0
        find . -name "$backup"* -print | while read line;
        do
        
        	i=$(($i + 1))
        	echo "$i ) $line"
        	extension=${line##*.}
        	if [ "$extension" -gt "$compareExt" ]
        	then
        		compareExt="$extension"
        		lastVersion="$i"
        		echo "extension = $extension compareExt= $compareExt "
        	fi
        
        done

        Je voudrais savoir si il n'y a pas un autre couplage à la commande find qui me permettrais de prendre par exemple les 5 dernier backup.

        Je sais pas si je suis plus claire, mais en tout cas merci de t'interesser à mon sujet :)



        • Partager sur Facebook
        • Partager sur Twitter
          7 novembre 2019 à 12:41:13

          Bonjour,

          Tu directement pipe le resultat de find dans une commande sort. Tu peux utiliser sort -t. -k3n qui devrait classer tous tes fichiers du plus ancien au plus récent.

          • Partager sur Facebook
          • Partager sur Twitter
            7 novembre 2019 à 12:52:19

            Salut je vais essayer mais si tu vois bien le find est pipe dans une boucle. Cette commande est quand même complexe. Mais je vais tester comme ça :)

            Par contre je lis dans le man et je ne vois pas le k3n. Comment trier du plus récent au plus ancien?

            -
            Edité par Don_raftapss 7 novembre 2019 à 12:59:37

            • Partager sur Facebook
            • Partager sur Twitter
              7 novembre 2019 à 13:06:44

              find . -name "$backup"* -print0 \
                  | sed -z 's/\(.*\)\.\(.*\)/\1|\2/' \
                  | sort -z -t '|' -k2,2n \
                  | tr '|' '.' \
                  | tail -z -n 5 \
                  | tr '\0' '\n

              -
              Edité par dantonq 7 novembre 2019 à 14:16:28

              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                7 novembre 2019 à 14:05:30

                C'est vraiment gentil de me donner la commande complète. 

                Mais saurais tu la décomposer et me l'expliquer pour que je m'en sorte seul. Car elle fait très peur cette commande :D

                • Partager sur Facebook
                • Partager sur Twitter
                  7 novembre 2019 à 14:20:51

                  je fais finir la sortie de find par un caractère NULL, au cas où un nom de fichier contient un retour chariot
                  je remplace le dernier point, qui précède l'extension,
                  je trie sur le dernier champs séparé (normalement par un point, que j'ai remplacé)
                  je restaure le point
                  je conserve les cinq dernières "lignes"
                  je restaure les retours chariots *

                  * si tu passes en core par while, il ne faut pas effectuer cette restauration.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                  Remplacer le nom d'une extension

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown