Può qualcuno spiegare la differenza con il mtime – e + switch poiché entrambi non stanno riportndo i risultati necessari. Sto cercando di eliminare tutti i file più vecchi di 5 giorni
find /mnt/sdb1/tmp/ -type f -mtime +5 -exec ls {} \; find /mnt/sdb1/tmp/ -type f -mtime -5 -exec ls {} \;
Ho cambiato l'output a ls per confrontare i risultati
Grazie
Dalla pagina degli uomini find
:
Numeric arguments can be specified as +n for greater than n, -n for less than n, n for exactly n. -mtime n File's data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file modification times. -atime n File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.
Così, -mtime +5
troverà questi file modificati per ultimo più di 5 * 24h fa e -mtime -5
troverà i file modificati per ultimo less di 5 * 24h fa. Per eliminare i file che sono più vecchi di 5 giorni si farebbe:
find /mnt/sdb1/tmp/ -type f -mtime +5 -exec rm {} \;
Se questo non restituisce il risultato desiderato, potrebbe essere un problema con il timestamp. È correttamente segnalato per i file in questione? Se si tratta di un'unità esterna USB, i file potrebbero essere stati creati su un'altra macchina e hanno un timbordo diverso da quello previsto.
-mtime +5
dovrebbe mostrare tutti i file modificati 5 giorni e prima (6, 7, …), mentre -5
dovrebbe mostrare quelli modificati oggi fino a 5 giorni fa.