脚本很简单。
运行时需要在工程根目录下,可修改脚本,以适应不同的uid
源码如下:
运行时需要在工程根目录下,可修改脚本,以适应不同的uid
源码如下:
- #!/usr/bin/perl -w
- use File::Find;
- use strict;
- my $iterType;# "findUid" "replace"
- my $oldUid;
- my $newUid;
- &main();
- sub main()
- {
- &findUid;
- if(! $oldUid)
- {
- die 'cannot find uid';
- }
- else
- {
- print "ori uid3=$oldUid/n";
- }
- $newUid="0x12345678";
- &ReplaceUid;
- }
- sub findUid
- {
- my $groupDir='./group';
- $iterType="findUid";
- find({'wanted'=>/&HandleFile,'no_chdir'=>1},$groupDir);
- }
- sub ReplaceUid
- {
- $iterType="findAll";
- find({'wanted'=>/&HandleFile,'no_chdir'=>1},".");
- }
- sub HandleFile
- {
- my $fullName=$File::Find::name;
- if (! -T $fullName)
- {
- return;
- }
- if ($iterType eq 'findUid')
- {
- &DoFindUid($fullName);
- }
- elsif ($iterType eq 'replace')
- {
- &DoReplaceUid($fullName);
- }
- else
- {
- }
- }
- sub DoFindUid
- {
- my ($file)=@_;
- if($file =~ /.mmp/)
- {
- print "found $file/n";
- open (MMPFILE,"<$file") or die "cannot open $file/n";
- my @content=<MMPFILE>;
- chomp @content;
- foreach (@content)
- {
- # UID 0xxxxxx 0x12345678
- if (//s*uid/s*(/w*)/s*(/w*)/i)
- {
- $oldUid=$2;
- $oldUid =~ s/0x//i;
- return;
- }
- }
- close MMPFILE;
- }
- }
- sub DoReplaceUid
- {
- my ($file)=@_;
- open FILEIN,"<$file" or die "cannot read $file/n";
- my @data=<FILEIN>;
- close FILEIN;
- my $line=0;
- foreach (@data)
- {
- if (/$oldUid/i)
- {
- print "in $file,line=$line,$_";
- s/$oldUid/$newUid/g;
- }
- ++$line;
- }
- open FILEOUT,">$file";
- print FILEOUT @data;
- close FILEOUT;
- }