Tenha em atenção que o seu comando remove directórios que não foram alterados num dia, mesmo que alguns ficheiros tenham sido alterados recentemente.
Assumindo que é isso que você quer, Stéphane Chazelas e thrig propuseram duas soluções nos comentários. O problema que você está enfrentando é que você instrua find
para excluir um diretório e, em seguida, ele tenta percorrê-lo para ver se há arquivos nele que correspondam.
-
Passe
-depth
para informarfind
para processar primeiro o conteúdo de um diretório e o próprio diretório. Isso desperdiça um pouco de tempo analisando o conteúdo dos diretórios que serão removidos mais tarde.find $JBOSS_HOME/standalone/tmp/vfs -depth -mindepth 1 -mmin +1441 -exec rm -rf {} \;
-
Use
-prune
para instruirfind
a não explorar os diretórios que estão sendo removidos.find $JBOSS_HOME/standalone/tmp/vfs -mindepth 1 -mmin +1441 -exec rm -rf {} \; -prune
Se você pretendia apenas excluir arquivos antigos, informe find
. Você pode usar -delete
em vez de invocar rm
.
find $JBOSS_HOME/standalone/tmp/vfs -mmin +1441 -type f -delete
Você pode remover os diretórios vazios:
find -depth $JBOSS_HOME/standalone/tmp/vfs -type d -empty -delete
Ou combine os dois, excluindo os diretórios depois que o arquivo que deve ser removido for removido:
find $JBOSS_HOME/standalone/tmp/vfs -depth -mindepth 1 -mmin +1441 -type f -delete -o -type d -empty -delete