Forum Linux.général Alias avec cible changeante.

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
3
fév.
2019

Bonjour.

Je trie beaucoup de photos et vidéos et je me sers de la commande "mediainfo" qui est capable de me donner le nom et les différentes tailles de mes photos et vidéos :

$mediainfo *.jpg | grep 'name\|Width\|Height'

Ça fonctionne bien, sauf que je dois, régulièrement, changer de cible (seulement quelques JPG par exemple, voire une seule photo).
Du coup, je dois retaper toute la commande et je trouve cela plutôt fastidieux. J'ai pensé à faire un alias mais je ne peux pas changer la cible.

Auriez-vous une suggestion, s'il vous plaît ? 

Je comptais aussi coloriser la sortie si possible, pour davantage de lisibilité. Est-ce qu'une bonne solution serait de faire un petit script que j'appellerais avec l'alias ? Ou il y a de meilleures solutions ?

Merci ! :)

  • # Un script

    Posté par  . Évalué à 4.

    Le plus rapide pour éviter d'avoir à retaper la commande est sûrement de faire un petit script dans ce genre:

    #!/bin/sh
    for arg in "$@"; do
      mediainfo "$arg" | grep 'name\|Width\|Height'
    done

    Ou alors Ctrl-r mais je pense que tu connais déjà, et puis il faut tout de même bouger le curseur avant de remplacer le nom de fichier.

    Pour les couleurs, je ne sais pas.

    • [^] # Une fonction

      Posté par  (site Web personnel) . Évalué à 4.

      Alternative au script dédié, dans ~/.bashrc ou équivalent pour le shell de ton choix :

      mymediainfo() {
        mediainfo "$@" | grep 'name\|Width\|Height'
      }
      

      Je ne sais pas trop ce que tu entends par coloriser, tu peux préciser ?

      Debian Consultant @ DEBAMAX

      • [^] # Re: Une fonction

        Posté par  . Évalué à 1.

        Je ne sais pas trop ce que tu entends par coloriser, tu peux préciser ?

        Peut-être qu'il souhaite utiliser l'option :

        grep --color=always
        

        Par défaut en autoça doit sauter quand invoqué en alias/fonction nan ?

      • [^] # Re: Une fonction

        Posté par  . Évalué à 1.

        Tout d'abord, merci à vous deux pour les deux propositions ! C'est très efficace. :)

        Pour coloriser, ce serait pour améliorer la lisibilité, par exemple, mettre le nom en vert. J'utilise bash (de base dans ma Debian, je pense).

        Après, c'est peut-être trop compliqué. C'est déjà bien mieux comme ça. C'est juste que quand je défile des dizaines/centaines de photos, c'est plus évident pour se repérer.

        • [^] # Re: Une fonction

          Posté par  . Évalué à 3.

          plutot que la couleur, qui va dependre de ton traitement ensuite,
          car j'imagine que ta sortie ressemble à

          name : monfichier.jpg
          Witdh : 1366
          height : 768
          name : monfichier2.jpg xxxxxx
          Witdh : 1440
          height : 900
          name : monfichier3.jpg xxxxxx
          Witdh : 900
          height : 1440

          note que tu peux te simplifier l'usage de grep avec egrep

          grep 'name\\|width\\|height'

          devient

          egrep 'name|width|height'

          l'option -i pour les deux permettra de prendre aussi les Height et HEIGHT…

          tu peux aussi utiliser des marqueurs.
          plutot que grep tu utilises sed pour rechercher name
          et le remplacer par "==name==" par exemple
          ainsi tu visualises bien le nouveau fichier, ces données

          == name == : monfichier2.jpg
          Witdh : 1440
          height : 900
          == name == : monfichier3.jpg
          Witdh : 900
          height : 1440
        • [^] # Re: Pour coloriser…

          Posté par  . Évalué à 2.

          Bonjour

          #!/bin/bash
          
          defFg="\033[0m"
          vert="\033[01;32m"
          jaune="\033[01;33m"
          cyan="\033[01;36m"
          
          while read; do
              [[ $REPLY =~ name   ]] && echo -e "${REPLY%:*}:$vert${REPLY#*:}$defFg"
              [[ $REPLY =~ Width  ]] && echo -e "${REPLY%:*}:$jaune${REPLY#*:}$defFg"
              [[ $REPLY =~ Heigth ]] && echo -e "${REPLY%:*}:$cyan${REPLY#*:}$defFg"
          done <<< $(mediainfo "$@")
        • [^] # Re: Une fonction

          Posté par  . Évalué à 4. Dernière modification le 03/02/19 à 22:44.

          Pour coloriser, ce serait pour améliorer la lisibilité

          j'ai jamais trop joué avec mais je sais qu'il existe des utilitaires dédiés comme colout.

          il y avait eu un journal dessus, tu pourras aussi lire les commentaires, toujours source d'inspiration.

          En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

          • [^] # Re: Une fonction

            Posté par  . Évalué à 1.

            Merci à vous 3 pour les pistes ! J'ai largement de quoi faire et optimiser tout ça ! :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.