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

Annotation of /MITgcm_contrib/jmc_script/rn_pickup

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


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

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

  ViewVC Help
Powered by ViewVC 1.1.22