script per eliminare files

Ciao a tutti!
Avrei la necessità di realizzare uno scriptino per eliminare dei files temporanei che un mac crea su di un fileserver con Fedora 8.

Io ho provato a scrivere ed eseguire questo, ma i files temporanei sono ancora lì…

#!/bin/bash
cd /server
for i in locate -i /*._* ; do rm -rf $i ; done
exit

I temporanei che vorrei eliminare hanno lo stesso nome del file originale, ma iniziano con ._ oppure si chiamano .DS_Store

Tali files sono sparpagliati in tutte le directory e vorrei eliminarli tutti, ovviamente senza toccare i files originali.

Sapreste aiutarmi ?

Grazie per il Vs. aiuto
*/

Prova a dare prima di lanciare lo script (visto che adopera locate)

updatedb

Ciao,
ci ho pensato un po’ prima di risponderti…
a costo di risultare antipatico:
hai un rm -r e troppi asterischi sulla stessa linea :wink:
cerca di raffinare il pattern e se puoi leva il -r (sono file no?)
se qualcosa va storto con il database di locate ti assicuro
che potresti piangere riverso sulla tastiera;

comunque ecco una possibile soluzione
ho messo un echo al posto di rm -rf , almeno puoi prima verificare.

locate -i /._ | while read file; do echo $file; done

*/

$  find / -name '*._'| xargs -i rm -rf {}

questo comando (da root) mi sembra piuttosto “pericoloso”.

Grazie per il Vs. aiuto.
Ho provato a fare l’updatedb, ma la selezione dei files funzionava anche prima, ovvero, se eseguo solo la prima parte del comando (il solo comando locate) e giro il risultato su di un file, vedo che i files selezionati sono corretti.

Purtroppo e rm che non sembra fare il suo lavoro: durante l’esecuzione del comando il server è impegnato, ma al termine dell’esecuzione è ancora tutto al suo posto…

Dopo aver cercato un po’ in rete, pensavo di sostituire locate con find (come peraltro suggeritomi da virus), ma scansionando una directory intera (completa di subdirs).

L’unica preoccupazione è di andare ad eliminare anche dei files che invece devo tenere che contengano i caratteri speciali di cui sopra.

il comando che andrei ad utilizzare sarebbe il seguente:

for i in find -name \*._* ; do rm -rf $i ; done

Secondo voi potrebbe essere una soluzione?

Grazie di nuovo per il prezioso aiuto

il comando che ti ho suggerito funziona per tutti i files presenti su / ( non è necessario il loop).
la mia perplessità deriva dal fatto che se viene dato come root esso potrebbe cancellarti file di sistema.
sarebbe opportuno da parte tua verificare prima quali files va a cancellare sostituendo il comando remove con un echo.

chiedo scusa per la rispota ritardata cmq potresti fare qualcosa del gener

#!/bin/bash

DATI="/server"

cd ${DATI}

if $(pwd) == ${DATI} ]; then
find . -type f -iname ‘._*’ -print -exec rm -rf {} ;
else
echo “non posso cambiare directory”
fi
e puoi come ha detto virus non capisco perche vuoi usare un ciclio for per fare questa cosa