Como excluir apenas arquivos, mas manter a estrutura do diretório?

14

Gostaria de excluir todos os arquivos, mas manter a estrutura das pastas. Há algum caminho?

NOTA: (Estou usando o GNU bash 4.1.5).

    
por Tom Brito 24.07.2013 / 22:11

4 respostas

15

Tente isto:

find . ! -type d -exec rm '{}' \;

Isso excluirá todos os arquivos, excluindo diretórios, abaixo do diretório de trabalho atual. Seja extremamente cuidadoso com este comando.

Se a versão de find na sua máquina suportar, você também pode usar

find . ! -type d -delete
    
por 24.07.2013 / 22:18
5

Você pode usar o comando find para localizar todos os arquivos, mas manter a estrutura de diretórios:

$ find /some/dir -type f -exec rm {} +

Por esse Unix & Linux Q & A intitulado: gnu localizar e mascarar { } para alguns shells - qual? , escapando do {} com ticks simples ( ' ) parece não ser mais necessário com shells modernos como o Bash.

    
por 24.07.2013 / 22:18
1

A maneira fácil de excluir todos os arquivos comuns no diretório atual e nos subdiretórios recursivamente:

zsh -c 'rm **/*(.)'

Somente o zsh tem os qualificadores do globbing para corresponder os arquivos por tipo. No entanto, o comando rm não funciona nos diretórios, portanto, no bash, você pode usar

shopt -s globstar
rm **/*

Isso não funciona para comandos diferentes de rm . Em geral, você pode usar find :

find . -type f -delete

ou se o seu find não for compatível com -delete :

find . -type f -exec rm {} +
    
por 25.07.2013 / 02:44
-2

Eu tinha requisitos semelhantes para excluir arquivos de um caminho e seus sub-diretórios (filtrando por tempo) sem excluir a estrutura de diretórios.

E eu usei o formato abaixo, que funcionou para mim.

localizar / test123 / home / test_file_hip / data / nfs -mtime +6 -tipo f -exec rm {} \;

Syntex: find (caminho do arquivo) -mtime (maior ou menor que days) -tipo f -exec rm {} \;

-type: Mencione o tipo de arquivo "f" para o diretório "d" -exec: execute o comando rm: remove {}: saída do comando find

Nota: teste antes de usá-lo. Por favor, sinta-se livre para corrigir ou atualizar se eu perdi alguma coisa.

    
por 02.11.2018 / 15:30