Rename

Beispiel:

> rename -h
Usage: rename [options] -o  -n   ...
   or: rename [options] =  ...
Options:
  -v[erbose]: displays actions
  -i[nteractive]: asks for confirmation, implies -v
  -t[est]: don't execute, implies -v, overrides -i
  -h[elp]
> ls *
bild.000.jpg bild.001.jpg bild.002.jpg bild.003.jpg bild.004.jpg 
bild.005.jpg bild.006.jpg bild.007.jpg bild.008.jpg bild.009.jpg 
bild.010.jpg bild.011.jpg bild.012.jpg bild.013.jpg bild.014.jpg 
bild.015.jpg bild.016.jpg bild.017.jpg bild.018.jpg bild.019.jpg 
drehbuch.txt szene1.txt szene2.txt
> rename bild=film *
> rename -v txt=txt.bak s*.txt
mv szene1.txt szene1.txt.bak
mv szene2.txt szene2.txt.bak
> ls *
film.000.jpg film.001.jpg film.002.jpg film.003.jpg film.004.jpg 
film.005.jpg film.006.jpg film.007.jpg film.008.jpg film.009.jpg 
film.010.jpg film.011.jpg film.012.jpg film.013.jpg film.014.jpg 
film.015.jpg film.016.jpg film.017.jpg film.018.jpg film.019.jpg 
drehbuch.txt szene1.txt.bak szene2.txt.bak
Shellscript:

#!/bin/csh
# author: Achim Stoesser
# Fri Nov 26 15:57:51 MET 1993

set oldtext=""
set newtext=""
set v=0
set i=0
set y=1
set t=0
while ($#argv > 0)
  switch ($1)
    case -*:
      switch ($1)
        case -v*: 
          set v=1
          breaksw
        case -i*: 
          set i=1
          set v=1
          breaksw
        case -t*: 
          set t=1
          set y=0
          set v=1
          breaksw
        case -o*: 
          set oldtext=$2
          shift argv
          breaksw
        case -n*: 
          set newtext=$2
          shift argv
          breaksw
        case -*:
          echo "Usage: rename [options] -o  -n   ..."
          echo "   or: rename [options] =  ..."
	  echo "Options:"
	  echo "  -v[erbose]: displays actions"
	  echo "  -i[nteractive]: asks for confirmation, implies -v"
	  echo "  -t[est]: don't execute, implies -v, overrides -i"
	  echo "  -h[elp]"
          exit(1)
          breaksw
      endsw
      breaksw
    case *=*:
      set oldtext=`echo $1|sed -e "s/=.*//"`
      set newtext=`echo $1|sed -e "s/.*=//"`
      breaksw
    default:
      if ($oldtext == "") then
        echo "Error: oldtext must not be empty"
	exit(1)
      endif
      set newname=`echo $1 | sed -e "s/$oldtext/$newtext/g"`
      if ($1 != $newname) then
        if ($v) echo mv $1 $newname
        if (($t != 1) && ($i)) then
          echo -n "rename "$1"? "        
	  set a=$<
	  switch ($a)
	    case [yY]*:
	      set y=1
	      breaksw
            default:
	      set y=0
	      breaksw
	  endsw
        endif
        if ($y) mv -i $1 $newname
      endif
      breaksw
  endsw
  shift argv
end