Late contribution for "mv *.abc *.xyz"

Harald.Eikrem at elab-runit.sintef.no Harald.Eikrem at elab-runit.sintef.no
Mon Sep 24 10:35:34 AEST 1990


In case of interest, here is my version, called `mvr'.  However the command
syntax differs from most other offerings, as might be seen.

--Harald E

Hope it makes it through the net....


#!/bin/csh -f
if ( $#argv < 3 ) then
   echo "usage: mvr [-n|-i] [-u|-l] RE replacement file ...\
\
       File rename utility, where "\`"RE' is substituted by "\`"replacement'\
       in each file name, sed(1) style.  Asks before each file to be\
       renamed.  Reports back on files that did not match the RE conditions.\
       Beware that both stings ("\`"RE' and "\`"replacement') may need to be\
       quoted.\
       Options are:  -n  dont ask, just log to standard output\
                     -i  ask for each file to be renamed (the default)\
                     -u  make filenames uppercase\
                     -l  make filenames lowercase"
   exit 1
endif
set ccase="" ask
while ( "$1" =~ -* )
   if ( "$1" == "-n" ) unset ask
   if ( "$1" == "-i" ) set ask
   if ( "$1" == "-u" ) set ccase = 'tr a-z A-Z'
   if ( "$1" == "-l" ) set ccase = 'tr A-Z a-z'
   shift
end
set skipped
set re1 = "$1"
set re2 = "$2"
shift
while ( "$2" != "" )
   shift
   if ( ! -e "$1" ) then
      echo \"$1\" nonexistent
      continue
   endif

   if ( "$ccase" != "" ) then
      set j=`echo "$1" | eval $ccase | sed "s,$re1,$re2,g"`
   else
      set j=`echo "$1" | sed "s,$re1,$re2,g"`
   endif
   if ( "$1" == "$j" ) then
      set skipped = ( $skipped $1 )
      continue
   endif
   if ( "$j" == "" ) then
      echo -n Really rename \""$1"\" to \""$j"\"", i.e. remove it ? (n) "
      set y=$<
      if ( "$y" == "" || "$y" == "n" || "$y" == "no" ) continue
   else if ( $?ask ) then
      echo -n Rename \""$1"\" to \""$j"\"" ? (y) "
      set y=$<
      if ( "$y" != "y" && "$y" != "yes" && "$y" != "" ) continue
   else
      echo Renaming \"$1\" to \"$j\"
   endif
   mv "$1" "$j"
   set renamed
end
if ( $?renamed == 0 ) then
   echo "No files renamed."
else if ( "$skipped" != "" ) then
   echo "Not renamed: $skipped"
endif



More information about the Comp.unix.misc mailing list