Newer
Older
alignement-pascal-francis / divers / IhfdCat
@besagni besagni on 8 Nov 2021 2 KB Ajout de l’utilitaire IhfdCat
#! /bin/sh -e
#****************************************************************
#                       hfdCat
#
# - Fonction qui effectue un cat sur l'ensemble des fichiers
#   contenus dans un HFD file
#
# - Les parametres : 
#               Nom du (ou des) HFD file(s)
#
# Auteur : Laurent SCHMITT 
# Date : 12 Janvier 1992
# Modifications : P. CHARPENTIER (15/12/1993)
#                 Ajout de set -e qui interromp le shell quand
#                 une commande du shell retourne une valeur
#                 d'exit differente de 0
#
#                 P. CHARPENTIER (15/12/1993)
#                 Harmonisation des sorties exit : quand il y a 
#                 une erreur, sortie avec exit(200), a la fin du
#                 main de exit (0) (tout s'est bien termine).
#
#                 D. BESAGNI (10/01/1994)
#                 restriction de cat aux fichiers de type :
#                       hfdfile/*.dd/*.df
#                 possibilite de concatener plusieurs hfdfiles.
#
#                 D. BESAGNI (23/02/1995)
#                 Correction d'un bug concernant le cas du cat
#                 de plusieurs HFD files
#
#                 D. BESAGNI (11/02/2002)
#                 modification destinée à permettre de traiter
#                 des HFD à plusieurs niveaux.
#
#                 D. BESAGNI (22/05/2003)
#                 vérification du type de fichier pour traiter
#                 indifferemment des fichiers HFD compresses ou
#                 non.
#
#                 D. BESAGNI (11/12/2019)
#                 modification du message d’erreur en remplaçant
#                 le nom en dur par le nom de fichier de la 
#                 variable “$0”.
#
#****************************************************************

traitement ()
{
current=`pwd`

cat=cat
ext=""

if test -d $1
then
    cd $1
    if [ -f 00.dd/00.df.z ]
    then
        cat=gzcat
        ext=".[Zz]"
    fi
    for i in [0-9][0-9].dd
    do
        if test -d $i
        then
            cd $i
            $cat [0-9][0-9].df${ext}
            wait
            cd ..
        else
            echo "$1/$i is not a directory"
        fi
    done
    if [ -d A ]
    then
        for i in [A-Z]
        do
        traitement $i | perl -pe "print \"$i\""
        done
    fi
    if [ -d a ]
    then
        for i in [a-z]
        do
        traitement $i | perl -pe "print \"$i\""
        done
    fi
    cd $current
else
    echo "$1 is not a directory"
fi
}

if [ $# -eq 0 ]
then
    prog=`basename $0`
    echo "usage: $prog hfd_name ..."
    exit 1
else
    while [ $# -ne 0 ]
    do
        traitement $1
        shift
    done
fi

exit 0