Estou tentando escanear uma unidade de backup e remover arquivos com mais de dois anos. No entanto, há uma pasta que quero que seja pulada, pois é onde os arquivos mais antigos necessários vão.
Aqui está o comando que tentei usar: find /mnt/backup/ -path '/mnt/backup/home/shares/Projects/Projects Archive' -prune -o -atime +731 -type f -delete *
Obtenho o resultado abaixo:
find: A ação -delete ativa automaticamente -depth, mas -prune não faz nada quando -depth está em vigor. Se você quiser continuar de qualquer forma, basta usar explicitamente a opção -depth.
Parece que encontrar esse problema pode ser um beco sem saída, mas espero que alguém tenha alguma ideia de como contornar isso.
Obrigado antecipadamente. B
Não entendi
find
bem o suficiente para saber se existe uma solução mais elegante, mas você poderia fazer algo assim:Isso é executado
find
para encontrar os arquivos antigos, remove os arquivos no caminho podado usandogrep
, então usaxargs
erm -r
para excluí-los. Não é o ideal porque, dependendo do comportamento de profundidade vs amplitude do find, ele pode excluir uma pasta recursivamente e, em seguida, tentar excluir um arquivo nessa pasta que já foi excluído. Gosto desse estilo de comando composto porque, em vez de executar orm -r
comando, você pode executarecho
, para depurar o script e certificar-se de que ele está sendo executado conforme o esperado antes de confirmar.abordagem diferente para excluir a pasta específica ao excluir arquivos com mais de dois anos
https://linuxconfig.org/how-to-explicitly-exclude-directory-from-find-command-s-search