Trovare file più vecchi di x giorni su un sistema con una scatola occupata ridotta


9

Devo trovare ed eliminare i file più vecchi di 1 settimana nell'unità di sviluppo. Ci sono utilità di numero limitato disponibili su questa unità. -mtime findIl predicato non è disponibile. Come posso controllare tutti i file più vecchi di x giorni in questo caso?


2
Non è chiaro cosa intendi con " mtimenon disponibile". Non è un'utilità di cui riconosco il nome.
Kusalananda

/ path / to / my / folder $ find -type f -mtime +7 elimina find: non riconosciuto: -mtime
Ravi

condividi la distribuzione di Linux che stai utilizzando.
Siva,

3
Sembra che sia occupato senza FEATURE_FIND_MTIME. È FEATURE_FIND_NEWERabilitato? Funziona find -newer? Il vostro testprogramma di utilità o [incorporato del vostro shsostegno -nt?
Stéphane Chazelas,

1
Puoi aggirare questo problema se puoi usare quelli touch -d/ date +%se[ file -nt other-file ]
Stéphane Chazelas il

Risposte:


11

-mtimeè un predicato standard di find(contrario a -delete) ma sembra che tu abbia una versione ridotta di busybox, in cui la FEATURE_FIND_MTIMEfunzionalità è stata disabilitata al momento della compilazione.

Se riesci a ricostruire busybox con questa opzione abilitata, dovresti essere in grado di fare:

find . -mtime +6 -type f -exec rm -f {} +

O se FEATURE_FIND_DELETEè abilitato anche:

find . -mtime +6 -type f -delete

In caso contrario, è possibile utilizzare altre opzioni find -newer(supponendo che FEATURE_FIND_NEWERsia abilitato) su un file impostato per avere un tempo di modifica di una settimana.

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -newer ../ref -exec rm -f {} +

Oppure, se -newernon è disponibile, ma sh's [supporti -nt:

touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
  find . ! -type f -exec sh -c '
    for f do
      [ "$f" -nt ../ref ] || printf "%s\0" "$f"
    done' sh {} + |
    xargs -0 rm -f

1
Sì, busybox era una versione più leggera qui. Dopo la ricostruzione, ha find . -mtime +6 -type f -exec rm {} \;funzionato per me
Ravi,

2

Da man find:

-tempo n

Ultimo accesso al file n * 24 ore fa. Quando scopri quanti periodi di 24 ore fa è stato effettuato l'ultimo accesso al file, qualsiasi parte frazionaria viene ignorata, quindi per abbinare -atime +1, è necessario accedere a un file almeno due giorni fa.

-ctime n

Lo stato del file è stato modificato l'ultima volta n * 24 ore fa. Vedere i commenti per -atime per capire in che modo l'arrotondamento influisce sull'interpretazione dei tempi di modifica dello stato del file.

A seconda dei casi d'uso dei file che si desidera eliminare, queste sono le uniche altre opzioni per find. Perché mtimenon è disponibile? Quale filesystem stai usando? Hai esplorato altre opzioni?


Fare più domande al PO dovrebbe essere fatto per chiarire i commenti , non le risposte .
Jeff Schaller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.