Ciao

Sto cercando di capire perché il seguente script non modifica i file come dovrebbe (non fa assolutamente niente). Qui sotto il codice:

codice:
#!/bin/bash

#
#   Questo è un piccolo script che prende come argomenti:
#   - il pathname di una directory
#`  - il pathname di un file contenente testo
#`  - una parola chiave
#   - un'opzione per indicare se la ricerca è case sensitive oppure no
#
#   Lo script deve individuare tutti i file contenuti nella directory (ricorsivamente), che abbiano
#   l'estensione specificata (o tutti se assente) e che non contengano la parola chiave specificata 
#   (o tutti se assente)
#
#   Deve, inoltre, aggiungere (all'inizio, prima del testo esistente) ad ognuno di questi file il 
#   testo contenuto nel file di testo specificato
#


if [[ -z "$1" && -z "$2" ]];    # Controlla la presenza degli argomenti
then
   echo "Usage: `basename $0` [PATHNAME] [TEXTFILEPATH] {KEYWORD} {EXTENSION} {-c}"
   echo
   exit 65
fi

if [[ -z "$3" && -z "$4" ]];   # Se non sono presenti la keyword e l'estensione...
then
   if [[ "$5" = "-c" ]];   # Se è presente l'opzione -c allora la ricerca è case sensitive
   then
      for filename in $(find $1 -name "*" -type f)
      do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt 
      mv $wd/filetmp.txt $filename
      done
   else
   for filename in $(find $1 -iname "*" -type f)     # ...altrimenti è case insensitive
   do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt 
      mv $wd/filetmp.txt $filename
   done
   fi
fi

if [[ -n "$3" && -z "$4" ]];     # Se è presente la keyword e non è presente l'estensione
then
   if [[ "$5" = "-c" ]];    # Se è presente l'opzione -c allora la ricerca è case sensitive
   then
      for filename in $(find $1 -name "*" -type f | xargs grep -ivq "$3")
      do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt 
      mv $wd/filetmp.txt $filename
      done
   else
   for filename in $(find $1 -iname "*" -type f | xargs grep -ivq "$3")     # ...altrimenti è case insensitive
   do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt
      mv $wd/filetmp.txt $filename
   done
   fi
fi

if [[ -z "$3" && -n "$4" ]];     # Se non è presente la keyword ed è presente l'estensione
then
   if [[ "$5" = "-c" ]];     # Se è presente l'opzione -c allora la ricerca è case sensitive
   then
      for filename in $(find $1 -name "*.$4" -type f)
      do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt 
      mv $wd/filetmp.txt $filename
      done
   else
   for filename in $(find $1 -iname "*.$4" -type f)    # ...altrimenti è case insensitive
      do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt
      mv $wd/filetmp.txt $filename
   done
   fi
fi

# Altrimenti significa che sono presenti sia la keyword che l'estensione..

if [[ "$5" = "-c" ]];      # Se è presente l'opzione -c allora la ricerca è case sensitive
then
   for filename in $(find $1 -name "*.$4" -type f | xargs grep -ivq "$3")
   do
   wd="$1"
   cat $2 $filename > $wd/filetmp.txt 
   mv $wd/filetmp.txt $filename
   done
   else
   for filename in $(find $1 -iname "*.$4" -type f | xargs grep -ivq "$3")      # ...altrimenti è case insensitive
   do
      wd="$1"
      cat $2 $filename > $wd/filetmp.txt
      mv $wd/filetmp.txt $filename
   done
   fi
fi

exit 0
Chi può aiutarmi?

Grazie.