| 1 | jmc | 1.1 | #!/bin/sh | 
| 2 |  |  |  | 
| 3 |  |  | # $Header:  $ | 
| 4 |  |  | # $Name:  $ | 
| 5 |  |  |  | 
| 6 |  |  | #- default: | 
| 7 |  |  | prt=1 | 
| 8 |  |  | action=1 | 
| 9 |  |  | cmd='mv -i' | 
| 10 |  |  | #- use main-pickup prefix to select between ckptA / ckptB: | 
| 11 |  |  | pref='pickup' | 
| 12 |  |  |  | 
| 13 |  |  | flag=0 ; opt='' ; nbArg=$# | 
| 14 |  |  | while [ $nbArg -ge 1 ] | 
| 15 |  |  | do | 
| 16 |  |  | case $1 in | 
| 17 |  |  | '-s') if test $prt = 1 ; then prt=0 ; else prt=-1 ; fi | 
| 18 |  |  | opt="$opt $1" ; nbArg=`expr $nbArg - 1` ; shift ;; | 
| 19 |  |  | '-v') if test $prt = 1 ; then prt=2 ; else prt=-1 ; fi | 
| 20 |  |  | opt="$opt $1" ; nbArg=`expr $nbArg - 1` ; shift ;; | 
| 21 |  |  | '-n') action=0 ; | 
| 22 |  |  | opt="$opt $1" ; nbArg=`expr $nbArg - 1` ; shift ;; | 
| 23 |  |  | '-f') cmd='mv -f' | 
| 24 |  |  | opt="$opt $1" ; nbArg=`expr $nbArg - 1` ; shift ;; | 
| 25 |  |  | '-p') if [ $# -ge 2 ] | 
| 26 |  |  | then pref=$2 ; opt="$opt $1=$2" | 
| 27 |  |  | nbArg=`expr $nbArg - 2` ; shift ; shift | 
| 28 |  |  | else echo "Error: prefix missing after '$1'" ; flag=-1 ; nbArg=0 | 
| 29 |  |  | fi ;; | 
| 30 |  |  | 'A'|'B'|'I'|'T') if test $flag = 0 | 
| 31 |  |  | then flag=$1 ; nbArg=`expr $nbArg - 1` ; shift | 
| 32 |  |  | else echo "Error: incompatible methods '$flag' & '$1' " | 
| 33 |  |  | flag=-1 ; nbArg=0 | 
| 34 |  |  | fi ;; | 
| 35 |  |  | *) echo "Error: unrecognized option: '$1'" ; flag=-1 ; nbArg=0 ;; | 
| 36 |  |  | esac | 
| 37 |  |  | done | 
| 38 |  |  | if test $prt = -1 ; then | 
| 39 |  |  | echo "Error: options: '$opt' are not compatible" ; | 
| 40 |  |  | flag=0; | 
| 41 |  |  | fi | 
| 42 |  |  |  | 
| 43 |  |  | if [ $prt -ge 2 ] ; then | 
| 44 |  |  | echo " flag='$flag' ; cmd='$cmd' ; move='$action' ; prt='$prt' ; opt='$opt'" | 
| 45 |  |  | fi | 
| 46 |  |  | if test $flag  = 0 -o $flag = -1 | 
| 47 |  |  | then | 
| 48 |  |  | echo "Usage: `basename $0`  method [options]" | 
| 49 |  |  | echo " Rename 'pickup*.ckpt[A,B].*' files to 'pickup*.[10-digits-iter].*'" | 
| 50 |  |  | echo "  method= A :: select pickup with suffix 'ckptA'" | 
| 51 |  |  | echo "  method= B :: select pickup with suffix 'ckptB'" | 
| 52 |  |  | echo "  method= I :: select the largest Iter number between 'ckptA' & 'ckptB'" | 
| 53 |  |  | echo "  method= T :: by Time: select the most recent pickup" | 
| 54 |  |  | echo " option: -v = verbose-mode  /  -s = silent   (<- not both)" | 
| 55 |  |  | echo " option: -n = do nothing (no mv)" | 
| 56 |  |  | echo " option: -f = force to move files (using 'mv -f')" | 
| 57 |  |  | echo " option: -p PREFIX = use PREFIX to select ckptA/B (e.g.: 'pickup_cd')" | 
| 58 |  |  | echo "           (default: PREFIX='pickup' corresponds to main pickup file)" | 
| 59 |  |  | exit 2 | 
| 60 |  |  | fi | 
| 61 |  |  | #  ( Note: PREFIX does not limit the Nb of pickup files to | 
| 62 |  |  | #    rename, since it always rename all the pickup*.ckpt?.* ) | 
| 63 |  |  | #- exit status: | 
| 64 |  |  | #      0 = normal renaming ; 1 = nothing to do ; > 1 = error : | 
| 65 |  |  | #      2 = argument list error  ; 3 = meta file is missing | 
| 66 |  |  | #      4 = error in reading iteration number from meta file | 
| 67 |  |  | #-------------------------------------------------------------- | 
| 68 |  |  |  | 
| 69 |  |  | #- 1) make the list of potential pickup-meta file (-> listM) | 
| 70 |  |  | if test $flag = 'T' | 
| 71 |  |  | then | 
| 72 |  |  | listM=`ls -t -1 $pref.*.meta 2> /dev/null | head -1` | 
| 73 |  |  | if test "x$listM" = x | 
| 74 |  |  | then echo "Error: no '$pref.*.meta' found" ; exit 3 ; fi | 
| 75 |  |  | zz=`echo $listM | sed "s/$pref\.//" | sed 's/\..*$//'` | 
| 76 |  |  | xx=`echo $zz | sed 's/[0-9]/a/g'` | 
| 77 |  |  | if test $xx = 'aaaaaaaaaa' | 
| 78 |  |  | then echo  ' => no need to rename pickup: latest='$listM | 
| 79 |  |  | exit 1 | 
| 80 |  |  | fi | 
| 81 |  |  | fi | 
| 82 |  |  |  | 
| 83 |  |  | if test $flag = 'A' -o $flag = 'B' | 
| 84 |  |  | then | 
| 85 |  |  | zz="ckpt$flag" | 
| 86 |  |  | listM=`ls -1 $pref.${zz}*.meta 2> /dev/null | head -1` | 
| 87 |  |  | if test "x$listM" = x | 
| 88 |  |  | then echo "Error: no '$pref.${zz}*.meta' found" ; exit 3 ; fi | 
| 89 |  |  | fi | 
| 90 |  |  |  | 
| 91 |  |  | if test $flag = 'I' | 
| 92 |  |  | then | 
| 93 |  |  | #-  first search for global meta file, then tiled meta file | 
| 94 |  |  | listM=`ls -1 $pref.ckpt{A,B}.meta 2> /dev/null` | 
| 95 |  |  | if test "x$listM" = x ; then | 
| 96 |  |  | listM=`ls -1 $pref.ckpt{A,B}.[0-9][0-9][0-9].[0-9][0-9][0-9].meta 2> /dev/null` | 
| 97 |  |  | fi | 
| 98 |  |  | if test "x$listM" = x | 
| 99 |  |  | then echo "Error: no '$pref.ckpt[A or B]*.meta' found" ; exit 3 ; fi | 
| 100 |  |  | fi | 
| 101 |  |  |  | 
| 102 |  |  | if [ $prt -ge 2 ] ; then echo ' listM='$listM ; fi | 
| 103 |  |  | #-- 2) select the meta-file corresponding to the largest iteration number | 
| 104 |  |  | iter=0; | 
| 105 |  |  | for xx in $listM | 
| 106 |  |  | do | 
| 107 |  |  | num=`grep '^ timeStepNumber =' $xx | sed 's/timeStepNumber = \[//' | sed 's/ \];$//'` | 
| 108 |  |  | if [ $num -gt $iter ] ; then | 
| 109 |  |  | iter=$num | 
| 110 |  |  | zz=`echo $xx | sed "s/$pref\.//" | sed 's/\..*$//'` | 
| 111 |  |  | if [ $prt -ge 2 ] ; then echo ' num='$num 'in' $zz ; fi | 
| 112 |  |  | fi | 
| 113 |  |  | done | 
| 114 |  |  | if test $iter = 0 ; then echo "Error: no iter found in meta file" ; exit 4 ; fi | 
| 115 |  |  |  | 
| 116 |  |  | #-- 3) move pickup files: | 
| 117 |  |  | sufx=`printf "%10.10i\n" $iter` | 
| 118 |  |  | listP=`ls pickup*.${zz}* | sed 's/\..*//g' | uniq` | 
| 119 |  |  | if [ $prt -ge 1 ] ; then echo ' rename' $zz  '->' $sufx 'for all:' $listP ; fi | 
| 120 |  |  | for yy in $listP | 
| 121 |  |  | do | 
| 122 |  |  | listF=`ls -1 $yy.${zz}*` | 
| 123 |  |  | for xx in $listF | 
| 124 |  |  | do | 
| 125 |  |  | new=`echo $xx | sed "s/^$yy\.$zz/$yy\.$sufx/"` | 
| 126 |  |  | if [ $prt -ge 2 ] ; then echo $cmd $xx $new ; fi | 
| 127 |  |  | if test $action = 1 ; then    $cmd $xx $new ; fi | 
| 128 |  |  | done | 
| 129 |  |  | done | 
| 130 |  |  | exit 0 |