# [RISOLTO] Cancellare files più vecchi di tre mesi

## fbcyborg

Salve a tutti, 

non sono per niente esperto di bash script, quindi chiedo una mano a voi.

Ho una directory nella quale vengono generati continuamente dei file che hanno una nomenclatura di questo tipo:

```
20091030-143645-1256909805.516.wav
```

Vorrei sapere come potrei fare per eliminare i file più vecchi di tre mesi. 

Poi metterei in crontab tale script, in modo che ogni giorno o ogni settimana vada ad effettuare le sue operazioni di pulizia.

EDIT1: Nel frattempo ho trovato questa cosa:

```
0 * * * * root find /your/path -ctime +2 -exec rm {} \;
```

Solo che non sembra funzionare un gran che.

EDIT2: invece ho fatto questo scriptino in Python che sembrerebbe funzionare abbastanza bene:

```
import os,time,datetime,math

def modification_date(filename):

    t = os.path.getmtime(filename)

    return datetime.datetime.fromtimestamp(t).date()

path="/path/alla/directory/"

dirList=os.listdir(path)

for fname in dirList:

    d = modification_date(fname)

    if datetime.datetime.now().date() - d > datetime.timedelta(90):

        os.remove(path+fname)
```

Solo che se lo metto in crontab, mi pare che non funzioni.

----------

## devilheart

vedo che il nome del file contiene una data. vuoi cancellare in base a questa? se si, ti basta una piccola espressione regolare per estrarre i 3 dati che ti servono

----------

## fbcyborg

Guarda, penso di aver ottenuto quello che mi serviva. Lo script finale in python che ho fatto è questo:

```
import os,time,datetime,math

def modification_date(filename):

    t = os.path.getmtime(filename)

    return datetime.datetime.fromtimestamp(t).date()

path="/path/alla/directory/"

dirList=os.listdir(path)

for fname in dirList:

    d = modification_date(path+fname)

    if datetime.datetime.now().date() - d > datetime.timedelta(60):

        os.remove(path+fname)
```

Grazie comunque!  :Wink: 

Se riuscissi a fare lo shred dei files sarebbe la ciliegina sulla torta!  :Very Happy: 

----------

## xdarma

- tmpwatch o tmpreaper opportunamente "istruiti"

- ho trovato questo con google:

```
find /path/alla/directory -mtime +90 -type f -exec rm -rf {} \;
```

Eventualmente al posto di "rm" puoi usare qualcosa di più sicuro ed inserirlo in crontab.

----------

## fbcyborg

Grande!

Quindi anche una cosa del tipo:

```
find /path/alla/directory -mtime +90 -type f -exec shred -n 10 -u -z -v {} \;
```

Potrebbe andar bene.

Immagino che "{}" stia a significare il nome del file corrente. Giusto?

----------

## ago

probabilmente in {} dovrebbe esserci il risultato della ricerca

----------

## fbcyborg

Grazie, comunque ho provato e funziona anche il secondo comando.

----------

## xdarma

 *fbcyborg wrote:*   

> Grande!

 

Veramente ha fatto tutto google, la prossima volta cerca meglio che c'eri quasi arrivato ;-)

Una curiosità: cosa c'è in quei file .wav che devi rendere irrecuperabili?

----------

## fbcyborg

Registrazioni audio, ma niente di illegale!  :Very Happy: 

----------

