Eu tenho muitos usuários abaixo /home
.
Cada usuário tem uma certa quantidade de diretórios com tamanhos grandes.
Eu extraí a lista de usuários criados no sistema em um arquivo de texto sem usuários do sistema (uid abaixo de 1000). Por exemplo, root, ftp e outros usuários do sistema não estão nos nomes de usuário-list.txt
Existe uma maneira que podemos permitir find
pesquisar esta lista usernames-list.txt e acessar seus /home/
diretórios com base nessas 2 condições podem ser executadas rm -rf
?
condição 1: lista de arquivos / diretórios com data de modificação / acessada com mais de 6 meses.
condição 2: lista de arquivos / diretórios que têm o tamanho de + 50 MB de tamanho.
executar: rm -f
man find
, há muitos testes que você pode fazer com arquivos.for name in $(cat usernames-list.txt);do find /home/"$name" -type f -atime +180 -size +50M -exec echo -f "{}" \;;done
Se você está confortável com os resultados substituaecho
comrm
find
para cada linha no usernames.txt. Eu editei o meu comentário, eu escrevi,-rf
mas desde encontrar vai procurar apenas por arquivos, não há necessidade de opção recursiva.find
posso fazer esses testes com diretórios. O que você quer é deletar apenas os diretórios que possuem tais arquivos ou deletar todo o/home/user
diretório?Respostas:
Isso listará todos os diretórios com arquivos com tempo de acesso maior que 180 dias e tamanho maior que 50MB.
Para remover, eu adicionei
xargs
depoissort
.No meu próprio / home, eu tenho alguns dirs com espaços e aspas simples no nome (em minha defesa, alguns dirs mp3 :)).
xargs
impresso um aviso sobre e me disse para adicionar-0
opção, e para corrigir o caractere nulo eu adicionei opção delimitador-d'\n'
.Se as coisas parecem ok para você, então você pode substituir
echo
comrm
oxargs
comando.Talvez
rm
imprima mensagens de erro porque algum diretório pai será removido antes de algum subdiretório.fonte
rm -rf
, talvez o/home/user
próprio possa aparecer na lista !! E lembre-se dos limites de cota :)