Como remover arquivos e pastas sob uma pasta específica

3

Como sabemos, para remover arquivos, podemos usar essa opção segura

  find /path/to/directory/ -mindepth 1 -mtime +5 -delete

E se quisermos remover as pastas e arquivos em / path / to / directory / folder; qual deve ser a sintaxe?

A opção de exclusão não pode remover pastas que não estão vazias.

 find /var/tmp -type d -mindepth 1 -mtime +5 -delete
 find: warning: you have specified the -mindepth option after a non-option    argument -type, but options are not positional (-mindepth affects tests   specified before it as well as those specified after it).  Please specify  options before other arguments.

 find: cannot delete '/var/tmp/foreman-ssh-cmd-1b987fef-10ca-4204-bf4b-441f28a3db07': Directory not empty
 find: cannot delete '/var/tmp/foreman-ssh-cmd-2687d337-2b60-4f20-b581-a70807c22cb9': Directory not empty
 find: cannot delete '/var/tmp/foreman-ssh-cmd-faedbb3a-7756-4c96-8a40-a4a2001b5fb3': Directory not empty
    
por yael 17.01.2017 / 07:04

1 resposta

3

Você não usou a opção -type , por isso find removerá ( -delete ) tudo o que corresponder às condições fornecidas (precisamente -mindepth 1 -mtime +5 aqui), seja arquivo ou diretório (se vazio) ou qualquer outra coisa.

Se você deseja remover apenas diretórios vazios:

find /path/to/directory/ -mindepth 1 -type d -mtime +5 -delete

Apenas para observar, é melhor dar uma olhada nos arquivos a serem removidos antes de realmente fazer a remoção, solte o -delete :

find /path/to/directory/ -mindepth 1-type d -mtime +5

Por questões de integridade, se você quiser pesquisar apenas arquivos e diretórios, insira uma construção OR em find :

find /path/to/directory/ -mindepth 1 \( -type f -o -type d \) -mtime +5 

Se você deseja remover também os diretórios que não estão vazios, use rm dentro da -exec action:

find /path/to/directory/ -mindepth 1 \( -type f -o -type d \) -mtime +5 -exec rm -r {} +

Adicione -f com rm , se necessário.

    
por 17.01.2017 / 07:09

Tags