2013-07-20 20 views
11

Vorrei eliminare i file più vecchi di 59 minuti. Finora l'ho fatto:Elimina file più vecchi di X minuti

find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" -exec rm -f {} \; 

Questo non funziona e sembra eliminare tutti i file. L'ho provato più volte e penso che il problema riguardi lo daystart.

Ho letto la pagina man e sembra che il tempo di base all'inizio della giornata, piuttosto che da 24 ore fa. In questo caso, come posso cancellare con precisione file più vecchi di 59 minuti? Devo contabilizzare per daystart e aggiungere qualche minuto in più?

Esempio:

[email protected]:/tmp$ ls -la 
total 8 
drwxrwxrwt 2 root root 4096 Jul 20 14:39 ./ 
drwxr-xr-x 23 root root 4096 Jun 25 18:34 ../ 
-rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 12:35 a.txt 

Entrambi i seguenti comandi, restituire il file:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" 
/tmp/a.txt 

E:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*" 
/tmp/a.txt 

Tuttavia, il file non è più vecchio di 659 minuti (10.9 ore)! Ma a 759 (12.65 ore), non restituisce più il file?

+0

A proposito. Mi piace il parametro '-delete' invece di' -exec rm -f {} \; '. – lanes

risposta

14

Se utilizzato con -mmin, -daystart sembra calcolare dall'fine di oggi, non l'inizio.

Se si desidera trovare i file modificati più di 59 minuti fa, non è necessario tale opzione. -mmin calcola dall'ora corrente per impostazione predefinita.

[email protected]:~/testdir$ date 
Sat Jul 20 10:02:20 CDT 2013 
[email protected]:~/testdir$ ls -l 
total 0 
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt 
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +2 -type f 
./a.txt 
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +10 -type f 
Problemi correlati