Erro ao excluir arquivos ou diretórios com mais de 1 dia

2

Eu posso excluir arquivos ou diretórios com mais de 1 dia usando o comando abaixo

find /u01/Release/* -mtime +1 -exec rm -r {} \;

mas por que estou recebendo erro na saída deste comando:

ls -lrt 
drwxr-xr-x 3 tomcat8 tomcat8      60 Oct  4 07:11 build_180
drwxrwxr-x 6 root    root        309 Sep 21  2017 redis-3.2.11
-rw-r--r-- 1 root    root    1550452 Oct  4 15:23 redis-3.2.11.tar.gz

find: ‘/u01/Release/redis-3.2.11’: No such file or directory

depois de executar o comando

ls -lrt 
drwxr-xr-x 3 tomcat8 tomcat8      60 Oct  4 07:11 build_180
-rw-r--r-- 1 root    root    1550452 Oct  4 15:23 redis-3.2.11.tar.gz
    
por RAJ METRE 04.10.2018 / 12:06

2 respostas

2

Este é um problema muito conhecido. O problema é que find primeiro remove o diretório e, em seguida, tenta processar os arquivos dentro dele. Uma solução é primeiro lidar com as coisas dentro do diretório e depois excluir o diretório. É para isso que a opção -depth é, então:

find /u01/Release/* -depth -mtime +1 -exec rm -r {} \;

deve fazer o truque. Você também pode estar interessado no formulário mais curto usando -delete action (o que implica -depth ):

find /u01/Release/* -mtime +1 -delete

Como sempre, man find é seu amigo.

    
por 04.10.2018 / 12:23
0

Tente o abaixo, é melhor usar --force , o que excluirá arquivos e diretórios.

find /u01/Release/* -mtime +1 -exec rm -rf {} \;


-r, -R, --recursive
              remove directories and their contents recursively
-f, --force
                  ignore nonexistent files, never prompt
    
por 04.10.2018 / 12:11

Tags