Changeset 956


Ignore:
Timestamp:
10/08/13 16:00:57 (11 years ago)
Author:
sdipsl
Message:

Cosmetics to fit with tab policy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libIGCM/libIGCM_post/check_expe_files_size.sh

    r507 r956  
    44doc="\nScript d'analyse des fichiers d'un repertoire pour y trouver des formes \n\ 
    55de nom de fichier avec dates, les dates, et des sequences de dates. \n\ 
    6 On synthetise la  
     6On synthetise la 
    77\n\n\t Syntaxe : $(basename $0) [-d] [-v/q] [-R] [-Z] dir [-S subdir] [-I maxyear]\n\n\ 
    88L'option -R permet d'inclure les sous-repertoires\n\ 
     
    4040while [ $# -ne 0 ] 
    4141do 
    42         case $1 in 
    43         -h|--help|-help) 
    44                         echo -e $doc  
    45                         exit -1 ;; 
    46         -e|-exemple) 
    47                     exemple=1 
    48 # exemple de formes de dates reconnues par ce script. La liste ci-dessous est aussi  
     42  case $1 in 
     43  -h|--help|-help) 
     44    echo -e $doc 
     45    exit -1 ;; 
     46  -e|-exemple) 
     47    exemple=1 
     48# exemple de formes de dates reconnues par ce script. La liste ci-dessous est aussi 
    4949# utilisee lors des tests du script 
    50                     cat<<-EOF > /tmp/$$.ldir 
     50    cat<<-EOF > /tmp/$$.ldir 
    5151MONEXP_20000101_20000131_1M_histmth.nc 
    5252MONEXP_20000101_20000131_1M_histmthNMC.nc 
     
    7474 
    7575EOF 
    76                     echo -e "\nExample : with this directory content\n" 
    77                     cat  /tmp/$$.ldir 
    78                     echo -e "\n\nYou would get :\n\n" 
    79                     break;; 
    80         -d|--debug) 
    81                 set -x 
    82                 debugflag=1 
    83                 shift ;; 
    84         -q|--quiet) 
    85                    quiet=1 
    86                    shift ;; 
    87         -v|--verbose) 
    88                     quiet=0 
    89                     shift ;; 
    90         -R|-r|--r) 
    91                   recursion=1  
    92                   shift ;; 
    93         -Z|-z|--z) 
    94                   examsize=1 
    95                   shift ;; 
    96         -S|-s|--s) 
    97                   subdir=$2 
    98                   shift 2 ;; 
    99         -I|-i|--i) 
    100                   maxyear=$2 
    101                   (( maxyearp1 = maxyear + 1 )) 
    102                   shift 2 ;; 
    103         *) 
    104           dir=$1 
    105           break ;; 
    106         esac 
     76    echo -e "\nExample : with this directory content\n" 
     77    cat  /tmp/$$.ldir 
     78    echo -e "\n\nYou would get :\n\n" 
     79    break;; 
     80  -d|--debug) 
     81    set -x 
     82    debugflag=1 
     83    shift ;; 
     84  -q|--quiet) 
     85    quiet=1 
     86    shift ;; 
     87  -v|--verbose) 
     88    quiet=0 
     89    shift ;; 
     90  -R|-r|--r) 
     91    recursion=1 
     92    shift ;; 
     93  -Z|-z|--z) 
     94    examsize=1 
     95    shift ;; 
     96  -S|-s|--s) 
     97    subdir=$2 
     98    shift 2 ;; 
     99  -I|-i|--i) 
     100    maxyear=$2 
     101    (( maxyearp1 = maxyear + 1 )) 
     102    shift 2 ;; 
     103  *) 
     104    dir=$1 
     105    break ;; 
     106  esac 
    107107done 
    108108 
    109109[ $quiet = 0 ] && echo quiet : $quiet recursion : $recursion - examsize : $examsize - dir - $dir -- subdir $subdir-- maxyearp1 : $maxyearp1 
    110110if [ $exemple = 0 ] ; then 
    111 [ ! -d $dir ] && echo "verif_expe_files : missing directory $dir "&& exit  
    112 ( cd $dir 
     111  [ ! -d $dir ] && echo "verif_expe_files : missing directory $dir "&& exit 
     112  ( cd $dir 
    113113    if [ $recursion = O ] ; then ls > /tmp/$$.ldir ; [ $examsize = 1 ] && ls -l > /tmp/$$.size # Cas "normal" : on liste les entrees du repertoire et ls long 
    114     else find ./$subdir  -type f > /tmp/$$.ldir ; [ $examsize = 1 ] && find ./$subdir -type f -exec ls -l {} \; >/tmp/$$.size # Cas de listage recursif des fichiers  
     114    else find ./$subdir  -type f > /tmp/$$.ldir ; [ $examsize = 1 ] && find ./$subdir -type f -exec ls -l {} \; >/tmp/$$.size # Cas de listage recursif des fichiers 
    115115    fi 
    116 ) 
     116  ) 
    117117fi 
    118118###head /tmp/$$.ldir ; head /tmp/$$.size ; rm /tmp/$$* 
     
    121121#set -x 
    122122# On remplace les / en ~ dans la liste des fichiers 
    123 cat /tmp/$$.ldir | tr "/" "~" > /tmp/$$.aa ; mv /tmp/$$.aa /tmp/$$.ldir  
    124 [ -f /tmp/$$.size ] && cat /tmp/$$.size | tr "/" "~" > /tmp/$$.aa && mv /tmp/$$.aa /tmp/$$.size  
     123cat /tmp/$$.ldir | tr "/" "~" > /tmp/$$.aa ; mv /tmp/$$.aa /tmp/$$.ldir 
     124[ -f /tmp/$$.size ] && cat /tmp/$$.size | tr "/" "~" > /tmp/$$.aa && mv /tmp/$$.aa /tmp/$$.size 
    125125# On deduit de la liste des fichiers des patterns de annee+mois, annee, intervalles de date ... 
    126126sed -r \ 
    127     -e 's/[0-5][0-9]{3}[01][0-9]/YYMM/g' \ 
    128     -e 's/YYMM01_YYMM(28|29|30|31)/YYmmdd_YYmmdd/g' \ 
    129                                            /tmp/$$.ldir | sort -u > /tmp/$$.lpat 
    130 # Ci-dessus, il faudrait compter les nb d'occ de chqaue pattern pour signaler et  
     127  -e 's/[0-5][0-9]{3}[01][0-9]/YYMM/g' \ 
     128  -e 's/YYMM01_YYMM(28|29|30|31)/YYmmdd_YYmmdd/g' \ 
     129  /tmp/$$.ldir | sort -u > /tmp/$$.lpat 
     130# Ci-dessus, il faudrait compter les nb d'occ de chqaue pattern pour signaler et 
    131131# ne pas retenir ceux qui n'apparaissent qu'une fois (sauf les decennaux ?) 
    132132# On ote les patterns sans date du tout 
    133133sed -i -e '/YY/!d' /tmp/$$.lpat 
    134134# On rend compte des patterns identifies 
    135 #echo "Formes de fichier identifiees: " ; awk '{printf "\t%s\n",$1}' /tmp/$$.lpat  
     135#echo "Formes de fichier identifiees: " ; awk '{printf "\t%s\n",$1}' /tmp/$$.lpat 
    136136# Une fonction pour associer un nom de fichier a chaque pattern : on remplace les / par des ~ 
    137 tmpfic (){  
    138 echo -n "/tmp/$$." ; echo $1 | tr "/" "_" 
     137tmpfic (){ 
     138  echo -n "/tmp/$$." ; echo $1 | tr "/" "_" 
    139139} 
    140 # Pour chaque pattern, on liste les dates pertinentes: annees de debut et fin pour les  
     140# Pour chaque pattern, on liste les dates pertinentes: annees de debut et fin pour les 
    141141# intervalles d'annees, ou annee ou annee+mois pour les autres 
    142142cat /dev/null > /tmp/$$.dates 
    143143#set -x 
    144144while read pattern ; do 
    145     if [ $(echo $pattern | grep "YYmmdd_YYmmdd") ] ; then 
    146         # On transforme le pattern pour mettre une sequences   
     145  if [ $(echo $pattern | grep "YYmmdd_YYmmdd") ] ; then 
     146        # On transforme le pattern pour mettre une sequences 
    147147        # de capture des annees de debut et fin d'intervalle 
    148         p2=$(echo $pattern | sed -e 's/YYmmdd_YYmmdd/([0-5][0-9]{3}[01][0-9])01_[0-5][0-9]{3}[01][0-9](28|29|30|31)/g' ) 
     148    p2=$(echo $pattern | sed -e 's/YYmmdd_YYmmdd/([0-5][0-9]{3}[01][0-9])01_[0-5][0-9]{3}[01][0-9](28|29|30|31)/g' ) 
    149149 
    150150       # On balaye le repertoire avec le(s) pattern(s) transforme(s) pour capturer les annees 
    151         grep -E $p2 /tmp/$$.ldir | sed -r -e "s/$p2/\1/g"  >> /tmp/$$.$pattern.tmp 
    152     fi 
    153     sort -n -u /tmp/$$.$pattern.tmp > /tmp/$$.$pattern.list 
    154     # Si la liste des date (annees ou annes+mois) pour le pattern est  
     151    grep -E $p2 /tmp/$$.ldir | sed -r -e "s/$p2/\1/g"  >> /tmp/$$.$pattern.tmp 
     152  fi 
     153  sort -n -u /tmp/$$.$pattern.tmp > /tmp/$$.$pattern.list 
     154    # Si la liste des date (annees ou annes+mois) pour le pattern est 
    155155    # de taille > 1, on l'integre a la liste generale des dates 
    156156    # en supprimant au prealable les dates isolees 
    157157    # ... ca reste a faire 
    158     cat /tmp/$$.$pattern.list | cut -c 1-4 >> /tmp/$$.dates 
     158  cat /tmp/$$.$pattern.list | cut -c 1-4 >> /tmp/$$.dates 
    159159done < /tmp/$$.lpat 
    160160# Fonction pour completer et rendre sequentielle une liste d'annees (une par ligne) 
    161161force_sequence (){ 
    162     awk '{ 
     162  awk '{ 
    163163        if (NR==1) {avant=$1; print $1} 
    164164        else { for (i=avant+1 ; i<=$1 ; i++) printf "%04i\n", i}}' 
     
    168168force_sequence < /tmp/$$.toutes_dates > /tmp/$$.tmp ; sort -u /tmp/$$.tmp > /tmp/$$.toutes_dates 
    169169# Fonction d'analyse de sequences de nombres (annees, ou annees+mois 
    170 # On transforme les series continues a a+1 a+2....b (a raison d'un par  
     170# On transforme les series continues a a+1 a+2....b (a raison d'un par 
    171171# ligne) en : "a-b" 
    172172sequence (){ 
    173     awk -v pas=${1:-1} '{ 
     173  awk -v pas=${1:-1} '{ 
    174174        if (NR==1) {avant=$1;nb=1; printf "%s",$1} 
    175         else {  
     175        else { 
    176176          suivant=avant+pas 
    177           # Pour les nombres sur 6 chiffres, on suppose que c est du YYYMM  
     177          # Pour les nombres sur 6 chiffres, on suppose que c est du YYYMM 
    178178          # et on gere le passage de decembre a janvier 
    179           if ((length(avant)==6) && (substr(avant,5,2)=="12"))  
     179          if ((length(avant)==6) && (substr(avant,5,2)=="12")) 
    180180            { avant4=substr(avant,1,4) ; suivant=sprintf("%4d01",avant4+1)} 
    181181          if ($1 > suivant) { 
     
    184184          else { nb=nb+1 } 
    185185          avant=$1  }} 
    186       END { if (nb >1) printf "-%s\n",avant ; else print ""} '  
     186      END { if (nb >1) printf "-%s\n",avant ; else print ""} ' 
    187187} 
    188188[ $quiet = 0 ] && echo $(wc -l /tmp/$$.ldir | cut -d \  -f 1) files proceeded. 
    189 [ $quiet = 0 ] && echo -n "Years occurring : " && sequence 1 < /tmp/$$.toutes_dates  
     189[ $quiet = 0 ] && echo -n "Years occurring : " && sequence 1 < /tmp/$$.toutes_dates 
    190190# on ne garde que les annees inferieures a maxyear 
    191191sed "/$maxyearp1/"',$d' </tmp/$$.toutes_dates >/tmp/$$.toutes_dates_maxyear 
    192 [ $quiet = 0 ] && echo -n "Years tested : " && sequence 1 < /tmp/$$.toutes_dates_maxyear  
     192[ $quiet = 0 ] && echo -n "Years tested : " && sequence 1 < /tmp/$$.toutes_dates_maxyear 
    193193mv /tmp/$$.toutes_dates_maxyear /tmp/$$.toutes_dates 
    194194# On liste tous les mois qui doivent etre presents (au motif qu'une annee est presente) 
    195195> /tmp/$$.toutes_dates_et_mois 
    196196while read an ; do 
    197     i=1 
    198     while [ $i -le 12 ] ; do 
    199         printf "%s%02d\n" ${an} $i  >> /tmp/$$.toutes_dates_et_mois 
    200         i=$(( i + 1 )) 
    201     done 
     197  i=1 
     198  while [ $i -le 12 ] ; do 
     199    printf "%s%02d\n" ${an} $i  >> /tmp/$$.toutes_dates_et_mois 
     200    i=$(( i + 1 )) 
     201  done 
    202202done < /tmp/$$.toutes_dates 
    203203# Pour chaque pattern, on analyse si toutes les dates sont presentes en bon nombre (decennie, an, an+mois) 
     
    206206#set -x 
    207207while read pattern ; do 
    208     [ `echo $pattern | grep -E "(YYmmdd_YYmmdd)"` ]  && pas=1 && \ 
    209         join -v 1 /tmp/$$.toutes_dates_et_mois  /tmp/$$.$pattern.list > /tmp/$$.$pattern.manques  
    210     sequence $pas < /tmp/$$.$pattern.manques > /tmp/$$.$pattern.synthese  
    211     truepattern=$(echo $pattern | tr "~" "/") 
    212     [ $quiet = 0 ] && printf "%80s : " $truepattern  && cat /tmp/$$.$pattern.synthese 
    213     cat /tmp/$$.$pattern.synthese >> /tmp/$$.synthese 
     208  [ `echo $pattern | grep -E "(YYmmdd_YYmmdd)"` ]  && pas=1 && \ 
     209    join -v 1 /tmp/$$.toutes_dates_et_mois  /tmp/$$.$pattern.list > /tmp/$$.$pattern.manques 
     210  sequence $pas < /tmp/$$.$pattern.manques > /tmp/$$.$pattern.synthese 
     211  truepattern=$(echo $pattern | tr "~" "/") 
     212  [ $quiet = 0 ] && printf "%80s : " $truepattern  && cat /tmp/$$.$pattern.synthese 
     213  cat /tmp/$$.$pattern.synthese >> /tmp/$$.synthese 
    214214done < /tmp/$$.lpat 
    215215 
     
    217217if [ $examsize = 0 ] ; then rm /tmp/$$* ; exit $rep ; fi 
    218218 
    219 # taille des fichiers  
     219# taille des fichiers 
    220220cat /dev/null > /tmp/$$.dates 
    221221#set -x 
    222222while read pattern ; do 
    223     i=1 
    224     while [ $i -le 12 ] ; do 
    225         mois=$(printf "%02d\n"  $i) 
    226         if [ $(echo $pattern | grep "YYmmdd_YYmmdd") ] ; then 
    227            # On transforme le pattern pour mettre une sequences   
     223  i=1 
     224  while [ $i -le 12 ] ; do 
     225    mois=$(printf "%02d\n"  $i) 
     226    if [ $(echo $pattern | grep "YYmmdd_YYmmdd") ] ; then 
     227           # On transforme le pattern pour mettre une sequences 
    228228           # avec le mois courant 
    229            px=$(echo $pattern | sed -e "s/YYmmdd_YYmmdd/([0-5][0-9]{3})${mois}01_[0-5][0-9]{3}${mois}(28|29|30|31)/g" ) 
     229      px=$(echo $pattern | sed -e "s/YYmmdd_YYmmdd/([0-5][0-9]{3})${mois}01_[0-5][0-9]{3}${mois}(28|29|30|31)/g" ) 
    230230 
    231231           # On balaye le repertoire avec le(s) pattern(s) transforme(s) pour capturer les tailles des fichiers de ce mois 
    232            grep -E $px /tmp/$$.size | awk '{print $5}' | sort -u >/tmp/$$.$pattern.size_${mois} 
     232      grep -E $px /tmp/$$.size | awk '{print $5}' | sort -u >/tmp/$$.$pattern.size_${mois} 
    233233           # On garde les infos s il n y a pas une taille unique 
    234            for size in $(cat /tmp/$$.$pattern.size_${mois})  ; do 
    235                grep -E $px /tmp/$$.size | grep " "${size}" " | tr "~" "/" >>/tmp/$$.$pattern.files_${mois}.${size} 
    236            done  
    237        fi 
    238        i=$(( i + 1 )) 
    239     done  
     234      for size in $(cat /tmp/$$.$pattern.size_${mois})  ; do 
     235        grep -E $px /tmp/$$.size | grep " "${size}" " | tr "~" "/" >>/tmp/$$.$pattern.files_${mois}.${size} 
     236      done 
     237    fi 
     238    i=$(( i + 1 )) 
     239  done 
    240240done < /tmp/$$.lpat 
    241241 
     
    245245touch /tmp/$$.synthese_size 
    246246while read pattern ; do 
    247     truepattern=$(echo $pattern | tr "~" "/") 
    248     [ $quiet = 0 ] && printf "%80s : " $truepattern  
    249     if [ `echo $pattern | grep -E "(YYmmdd_YYmmdd)"` ]  ; then 
    250         RESULT="" 
    251         for i in 1 2 3 4 5 6 7 8 9 10 11 12 ; do 
    252             mois=$(printf "%02d\n"  $i) 
    253             if [ $(wc -l /tmp/$$.$pattern.size_${mois} |  cut -d " " -f 1) = 1 ] ; then  
    254                 RESULT="$RESULT "  
    255             else  
     247  truepattern=$(echo $pattern | tr "~" "/") 
     248  [ $quiet = 0 ] && printf "%80s : " $truepattern 
     249  if [ `echo $pattern | grep -E "(YYmmdd_YYmmdd)"` ]  ; then 
     250    RESULT="" 
     251    for i in 1 2 3 4 5 6 7 8 9 10 11 12 ; do 
     252      mois=$(printf "%02d\n"  $i) 
     253      if [ $(wc -l /tmp/$$.$pattern.size_${mois} |  cut -d " " -f 1) = 1 ] ; then 
     254        RESULT="$RESULT " 
     255      else 
    256256                # special case for february , we accept 2 different sizes for february for leap year 
    257                 if [[ $i == 2 && $(wc -l /tmp/$$.$pattern.size_${mois} |  cut -d " " -f 1) = 2 ]] ; then 
     257        if [[ $i == 2 && $(wc -l /tmp/$$.$pattern.size_${mois} |  cut -d " " -f 1) = 2 ]] ; then 
    258258                   # est ce qu il y a des mois de 29 jours? si non souci reel 
    259                    if [ $( grep 0229 /tmp/$$.$pattern.files_02.* 1>/dev/null 2>&1 ) ] ; then 
    260                        RESULT="$RESULT \033[1;31m[$mois]\033[m" 
    261                        cat  /tmp/$$.$pattern.size_${mois} >> /tmp/$$.synthese_size 
    262                    else 
    263                        RESULT="$RESULT " 
    264                    fi 
    265                 else 
    266                    RESULT="$RESULT \033[1;31m[$mois]\033[m"  
    267                    cat  /tmp/$$.$pattern.size_${mois} >> /tmp/$$.synthese_size 
    268                 fi 
    269             fi 
    270         done  
    271         [ $quiet = 0 ] && echo -e $RESULT 
    272     fi 
     259          if [ $( grep 0229 /tmp/$$.$pattern.files_02.* 1>/dev/null 2>&1 ) ] ; then 
     260            RESULT="$RESULT \033[1;31m[$mois]\033[m" 
     261            cat  /tmp/$$.$pattern.size_${mois} >> /tmp/$$.synthese_size 
     262          else 
     263            RESULT="$RESULT " 
     264          fi 
     265        else 
     266          RESULT="$RESULT \033[1;31m[$mois]\033[m" 
     267          cat  /tmp/$$.$pattern.size_${mois} >> /tmp/$$.synthese_size 
     268        fi 
     269      fi 
     270    done 
     271    [ $quiet = 0 ] && echo -e $RESULT 
     272  fi 
    273273done < /tmp/$$.lpat 
    274274 
    275275# affichage des details 
    276276while read pattern ; do 
    277     first=0 
    278     i=1 
    279     truepattern=$(echo $pattern | tr "~" "/") 
    280     while [ $i -le 12 ] ; do 
    281         mois=$(printf "%02d\n"  $i) 
    282         if [ $(echo $pattern | grep "YYmmdd_YYmmdd") ] ; then 
     277  first=0 
     278  i=1 
     279  truepattern=$(echo $pattern | tr "~" "/") 
     280  while [ $i -le 12 ] ; do 
     281    mois=$(printf "%02d\n"  $i) 
     282    if [ $(echo $pattern | grep "YYmmdd_YYmmdd") ] ; then 
    283283           # si on a plus de 2 tailles de fichiers pour ce mois, on liste le nombre de fichiers par taille et les 3 premiers 
    284284           # cas special pour fevrier qui accepte 2 tailles differentes si 1 pour les 28 et l autre pour les 29 
    285            if [ $(wc -l /tmp/$$.$pattern.size_${mois} | cut -d " " -f 1) != 1 ] ; then 
    286                if  [[ $i == 2 && $(wc -l /tmp/$$.$pattern.size_${mois} |  cut -d " " -f 1) == 2 ]] ; then 
     285      if [ $(wc -l /tmp/$$.$pattern.size_${mois} | cut -d " " -f 1) != 1 ] ; then 
     286        if  [[ $i == 2 && $(wc -l /tmp/$$.$pattern.size_${mois} |  cut -d " " -f 1) == 2 ]] ; then 
    287287                   # est ce qu il y a des mois de 29 jours? sinon souci reel 
    288                    if [ $( grep 0229 /tmp/$$.$pattern.files_02* 1>/dev/null 2>&1 ) ] ; then  
    289                        if [[ ${first} == 0 ]] ; then printf "Details %73s : \n" $truepattern ; first=1 ; fi 
    290                        echo mois : ${mois} 
    291                        for size in $( cat /tmp/$$.$pattern.size_${mois} ) ; do 
    292                            head -1 /tmp/$$.$pattern.files_${mois}.${size} 
    293                        done 
    294                    fi 
    295                else 
    296                    if [[ ${first} == 0 ]] ; then printf "Details %73s : \n" $truepattern ; first=1 ; fi 
    297                    echo mois : ${mois}  
    298                    for size in $( cat /tmp/$$.$pattern.size_${mois} ) ; do 
    299                        head -1 /tmp/$$.$pattern.files_${mois}.${size} 
    300                    done 
    301                fi 
    302            fi 
    303        fi 
    304        i=$(( i + 1 )) 
    305     done 
     288          if [ $( grep 0229 /tmp/$$.$pattern.files_02* 1>/dev/null 2>&1 ) ] ; then 
     289            if [[ ${first} == 0 ]] ; then printf "Details %73s : \n" $truepattern ; first=1 ; fi 
     290            echo mois : ${mois} 
     291            for size in $( cat /tmp/$$.$pattern.size_${mois} ) ; do 
     292              head -1 /tmp/$$.$pattern.files_${mois}.${size} 
     293            done 
     294          fi 
     295        else 
     296          if [[ ${first} == 0 ]] ; then printf "Details %73s : \n" $truepattern ; first=1 ; fi 
     297          echo mois : ${mois} 
     298          for size in $( cat /tmp/$$.$pattern.size_${mois} ) ; do 
     299            head -1 /tmp/$$.$pattern.files_${mois}.${size} 
     300          done 
     301        fi 
     302      fi 
     303    fi 
     304    i=$(( i + 1 )) 
     305  done 
    306306done < /tmp/$$.lpat 
    307307 
     
    313313[ $debugflag = 0 ] && rm -f /tmp/$$.* /tmp/$$.ldir 
    314314exit $rep 
    315 # Changes  
     315# Changes 
    316316# - 20 april 2010 : add handling of pattern year1-year2, which is a generalization of decades 
    317317# - janvier 2011 : suppression des caracteres accentues 
     
    319319#                  ajout de la verification des tailles des fichiers mensuels 
    320320#                  ajout des options -d -q/-v -R -S subdir -I maxyear 
    321  
    322  
Note: See TracChangeset for help on using the changeset viewer.