Como a implementação busybox do find não oferece formatação de saída personalizada, você precisa terceirizar a tarefa de formatação para um programa separado :) Felizmente, até busybox
inclui o prático comando stat
. Seus campos de formato de saída são diferentes daqueles que o GNU find usa, então os símbolos que você precisa usar são diferentes. O script abaixo assume que find
e stat
são aqueles provenientes de busybox
.
DIRS="a/ b/"
MAXDELBYTES="53687091200" # 50GB
DELBYTES="0"
find $DIRS -type f -exec stat -c "%Y %s %n" {} \; | sort -r -n | while read time bytes filename
do
rm -fv "$filename"
DELBYTES=$((DELBYTES + bytes))
if [ $DELBYTES -ge $MAXDELBYTES ]; then break; fi
done
Como sempre, leia a descrição de cada comando antes de usá-lo. No caso de busybox
, você não encontrará manpages para eles, mas você pode usar --help
para exibir informações de uso.
Esteja avisado, que esta solução pode quebrar coisas em uma situação improvável, quando os nomes dos arquivos contiverem novos símbolos neles! Isso não deve ocorrer em um sistema saudável, mas pode acontecer, por exemplo, se alguém conseguir invadir o sistema ou explorar alguma vulnerabilidade que permita a criação arbitrária de arquivos.
Para evitar a remoção acidental de arquivos úteis nesses casos, você deve primeiro localizar e remover todos os arquivos que incluam novas linhas em seus nomes. Para listar esses, execute:
find / -name "*
*"
(Existe somente uma nova linha entre os asteriscos.) Então, quando tiver certeza de que todos esses arquivos não são necessários, exclua-os usando
find / -name "*
*" -delete
ou
find / -name "*
*" -print0 | xargs -0 rm -vf
Ambos devem funcionar com busybox
.