/[MITgcm]/MITgcm_contrib/jmc_script/rn_pickup
ViewVC logotype

Contents of /MITgcm_contrib/jmc_script/rn_pickup

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Wed Nov 7 01:40:47 2007 UTC (16 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: testing_tag01, HEAD
don't need additional scripts anymore

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

  ViewVC Help
Powered by ViewVC 1.1.22