Un espace si dense
BASH

Quelques petits trucs en Bash

jeudi 15 février 2007 par guillaume

Petits scripts bash qui ne mangent pas de pain. Ils peuvent être facilement améliorés

Change

Petit script bash pour changer les extensions de tous les fichiers d’un dossier : on met les extensions que l’on veut changer puis celles que l’on veut avoir ex :change ppng png Si on veut utiliser un programme externe (sans arguments dans ce code, mais c’est facile à modifier) il faut faire : ex :change png jpg convert (convert, outil d’ImageMagick, permet de convertir les types d’images)

#!/bin/sh
#programme pour changer les noms
# par exemple fait pngs -> png
# ou fait png -> jpg si on met convert en plus
function elimine_suf()
{
       echo ${1%\.*}
}


i=0
modif=false
start=false
while [ $# -ne 0 ] ; do
       i=$((i+1))

       case $i in
               1 ) echo  "valeur de depart" $1
               depart=$1;;
               2 ) echo "valeur d'arrivee" $1
               arrive=$1
               start=true #On peut y aller
               ;;
               3 ) echo "programme de modification" $1
               modification=$1
               modif=true ;;
               ? ) echo "Il ne faut que 3 options" ;;
       esac
       shift
done


echo $depart $arrive $modification $modif

if [ $start = true ] ; then
       if [ $modif =  true ] ; then
       echo "Vous avez un programme de convertion";
       for j in $(ls|grep $depart$) ; do
               k=$(elimine_suf $j)
               k=$k\.$arrive
               echo "Modif de votre fichier" $modification  $j "->" $k
       $($modification $j $k)
       done
       else
       echo "Pas de programme de convertion";
       for j in $(ls|grep $depart$) ; do
               k=$(elimine_suf $j)
               k=$k\.$arrive
               echo "Modif de votre fichier mv"  $j "->" $k
               mv $j $k
       done
       fi
else
       echo "C'est pas possible"
fi

Compte

Ici, c’est pour compter les lignes d’un projet : On met compte cpp et ainsi le code va compter toutes les lignes des fichiers cpp dans le dossier courant et ses sous dossiers. Il fait l’addition à la fin.


#!/bin/sh
ICI=$(pwd)
echo $ICI 'Nous allons compter les lignes de votre projet'

arg=false
i=0
       lignes=0
while [ $# -ne 0 ] ; do
       i=$((i+1))
       case $i in
               1 ) echo 'fichiers' $1
               arg=$1;;
               ? ) echo 'non utilise';;
       esac
       shift
done

if [ $arg == false ] ; then
       echo zut;
else
       for j in $(du|awk '{print $2}') ; do

               cd $j
               DOSSIER=$(pwd)
               bidule=$(ls|grep '\.'$arg'$'|tail -n 1)
               if [ -n "$bidule" ] ; then
               ligne=$(wc -l *.$arg|awk 'BEGIN{c=0};{c=c+$1}END{print c;}')
               echo $ligne ' dansvotre dossier: '$DOSSIER
               lignes=$((lignes+ligne))
               fi
               cd $ICI
       done
fi
               echo 'nombre total de lignes :' $lignes

Extraction des canaux RGB avec ImageMagick


convert 65.png -channel G -separate separate_g.png
En couplant l’extraction des canaux RBG avec le code ’change’, au prix de quelques modifications, on peut avoir des fichiers fits RGB pour le traitement d’images : pratique.

Accueil du site | Contact | Plan du site | Espace privé | visites : 37371

RSS RSSfr

Site réalisé avec SPIP 1.8.3 + ALTERNATIVES