Remover arquivos + arquivos de subdiretórios no diretório

1

Eu gostaria de remover todos os arquivos de um diretório / dados que inclui 8 outros subdiretórios.

Existe um comando que limpará recursivamente todos os subdiretórios, mas não removerá as pastas reais?

    
por nm97 11.11.2018 / 22:43

3 respostas

4

O seguinte excluiria quaisquer arquivos que não sejam de diretório, como arquivos comuns, links simbólicos, pipes nomeados, sockets, etc., dentro ou sob o diretório /data :

find /data ! -type d -delete

Para implementações de find que não têm o predicado não padrão -delete , use -exec rm -f {} + em seu lugar:

find /data ! -type d -exec rm -f {} +

Isso localizaria todos os arquivos que não são de diretório em /data e executaria rm -f em lotes tão grandes quanto possível.

    
por 11.11.2018 / 22:47
0

Use o comando find

find /data -type f -exec rm -rf {} \; 

excluirá apenas arquivos devido ao tipo de seleção de tipo f para arquivos.

    
por 11.11.2018 / 22:46
0

Você pode usar o comando find para isso.

Para criar um caso de teste para reproduzir sua descrição, deixe-me fazer o seguinte:  1. cd /tmp  2. mkdir -p testing/{a,b,c}  3. cd testing/  4. touch {a,b,c}/{1,2,3}

Para verificar, existem vários diretórios, cada um contendo vários arquivos:

$ find -type f
./c/3
./c/2
./c/1
./b/3
./b/2
./b/1
./a/3
./a/2
./a/1

Agora você pode usar find novamente para excluir o que encontrar:

find -type f -delete

Se você executar find -type f novamente, ele não retornará nenhum resultado, porque os arquivos desapareceram, mas você pode ver que os diretórios ainda existem:

$ ls
a  b  c

O comando find é muito poderoso. Você pode descobrir mais sobre isso usando man find .

    
por 11.11.2018 / 22:51

Tags