Com ferramentas GNU:
find . -type f -printf '%T@:%pfind . -type f -printf '%T@:%p%pre%' |
sort -rzn |
awk -v RS='%pre%' -v ORS='%pre%' -F: -v d=10 '
NR == 1 {t = $1 - 86400 * d}
$1 < t, 0 {sub(/[^:]*:/, ""); print}' |
xargs -r0 echo rm
' |
sort -rzn |
awk -v RS='%pre%' -v ORS='%pre%' -F: -v d=10 '
NR == 1 {t = $1 - 86400 * d}
$1 < t, 0 {sub(/[^:]*:/, ""); print}' |
xargs -r0 echo rm
(remova o echo
quando feliz).
Estamos recebendo find
para imprimir 123456.123:./path/to/file<NUL>
para cada arquivo (com 123456.123
sendo a hora da última modificação dos arquivos).
Estamos classificando isso numericamente (assim, o arquivo mais novo vem primeiro) e, em seguida, usando awk
para encontrar aqueles que são mais de 10 dias mais antigos que o arquivo mais recente (encontrado no primeiro registro dessa lista classificada).