linux user group brescia

immagine del castello

Archivio della mailing list

Script rm bash

Maurizio Paolini paolini a dmf.bs.unicatt.it
Mar 5 Feb 2002 14:31:01 UTC
> Se devo rimuovere un gruppo di file, scelti a seconda di un mio 
> criterio, grandezza, tipo file o altro, c'รจ un comando specifico di 
> "rm" o devo farmi uno script?

rm accetta come parametri solo un elenco di files (o di directory nel caso
si usi l'opzione "-r".

In genere poi ci si appoggia all'espansione fatta dalla shell (una qualunque
delle solite: bash, tcsh, sh, csh,...) che trasforma ad esempio la stringa
"[Pp]ippo*" nell'elenco dei files che iniziano con "Pippo" o "pippo"
(tanto per fare un esempio), e passa il risultato a "rm".

E' chiaro che in questo modo e' possibile solo effettuare delle selezioni
in base al nome.  Per cose piu' complesse e' inevitabile il ricorso ad
uno script (o a una serie di comandi interattivi).  Ecco un esempio usando
"bash":

   list=`ls`       [mi procuro l'elenco dei files, esclusi quelli nascosti]
   for file in $list
   do
      size=`ls -ld $file | tr -s " " | cut -f5 -d" "`
      if [ "$size" -ge "1000" ]
      then
         echo "sto' cancellando \"$file\", ormai non ci puoi fare piu' niente!"
         rm $file
      fi
   done

Naturalmente non ti azzardare a mettere veramente il comando "rm" al primo
tentativo!  Meglio stare "extra" attenti.  Io di solito metto "echo rm $file"
al posto di "rm $file" nel primo tentativo.

mp



Maggiori informazioni sulla lista Lug