Isso listará todos os diretórios com arquivos com tempo de acesso maior que 180 dias e tamanho maior que 50 MB.
for name in $(cat usernames.txt); do
find /home/"$name" -type f -atime +180 -size +50M|sed 's/\/[^/]\+$//'|sort -u
done
Para remover, adicionei xargs
após sort
.
No meu próprio / home, eu tenho alguns dirs com espaços e aspas simples no nome (em minha defesa, alguns dirs mp3 :)). xargs
imprimiu um aviso e me disse para adicionar a opção -0
, e para corrigir o caractere nulo, adicionei a opção delimitador -d'\n'
.
for name in $(cat usernames.txt); do
find /home/"$name" -type f -atime +180 -size +50M|sed 's/\/[^/]\+$//'|sort -u|xargs -0 -d'\n' -n1 -I{} echo -rf "{}"
done
Se as coisas parecem boas para você, então você pode substituir echo
por rm
no comando xargs
.
Talvez rm
imprima mensagens de erro porque algum diretório pai será removido antes de algum subdiretório.