Não é possível excluir arquivos usando o script

2

Após uma longa pesquisa, tentativa e erro, criei um script

#!/bin/bash

find /home/SHARE/temp/* -mtime +10 -exec rm {} \;

Quando criado, ele foi executado e excluiu todos os arquivos com mais de 10 dias, mas deixou as pastas nas quais esses arquivos estavam.

Eu escrevi no cron e agora vejo que não faz nada.

Talvez eu tenha escrito incorretamente no cron, mas quando tento executá-lo manualmente, recebo o seguinte:

rm query: remove write-protected regular file

e pede para confirmar a exclusão, e depois disso diz

Permission denied

Como fazer com que não apenas os arquivos, mas também as pastas sejam excluídas?

Como executar automaticamente um script com direitos sudo?

Obrigado pela sua ajuda

    
por Garazd 26.05.2017 / 11:20

2 respostas

2

Para excluir diretórios vazios abaixo, mas não incluindo / home / SHARE / temp use

find /home/SHARE/temp -depth -mindepth 1 -type d -empty -exec rmdir {} \;

Para excluir apenas arquivos em seu comando original, inclua -type f

find /home/SHARE/temp -type f -mtime +10 -exec rm {} \;

Se você usar esses comandos do cron, substitua \; por \;

    
por Jeffrey Ross 29.05.2017 / 10:26
1

eu acredito que você precisa forçar a remoção de um arquivo, pois o arquivo é lido apenas modificando a linha:

find /home/SHARE/temp/* -mtime +10 -exec rm {} \;

para

find /home/SHARE/temp/* -mtime +10 -exec "rm -f" {} \;

Além disso, você gostaria de executar o script usando o usuário root.

    
por krishna chalise 29.05.2017 / 10:29