-mtime
je standardní predikát find
(na rozdíl od -delete
), ale vypadá to, že máte zkrácenou verzi busybox
, kde FEATURE_FIND_MTIME
funkce byla v době sestavování deaktivována.
Pokud můžete znovu sestavit busybox s povoleným, měli byste být schopni:
find . -mtime +6 -type f -exec rm -f {} +
Nebo pokud FEATURE_FIND_DELETE
je také povoleno:
find . -mtime +6 -type f -delete
Pokud ne, dalšími možnostmi může být použití find -newer
(za předpokladu FEATURE_FIND_NEWER
je povoleno) u souboru, který je nastaven tak, aby měl jeden týden starý čas úprav.
touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
find . ! -type f -newer ../ref -exec rm -f {} +
Nebo pokud -newer
není k dispozici, ale sh
's [
podporuje -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
Od man find
:
-čas n
Soubor byl naposledy otevřen před n*24 hodinami. Když zjistíte, před kolika 24hodinovými obdobími byl soubor naposledy zpřístupněn, jakákoli zlomková část je ignorována, takže aby odpovídalo -atime +1, soubor musí být zpřístupněn alespoň před dvěma dny.
-ctime n
Stav souboru byl naposledy změněn před n*24 hodinami. Podívejte se na komentáře k -atime, abyste pochopili, jak zaokrouhlování ovlivňuje interpretaci časů změny stavu souboru.
V závislosti na případech použití souborů, které chcete smazat, jsou toto vaše jediné další možnosti pro find
. Proč je mtime
není dostupný? Jaký souborový systém používáte? Zkoumali jste nějaké další možnosti?