| 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 |