Exclui arquivos de todos os diretórios de um diretório

3

Recentemente, precisei excluir todos os arquivos dentro de ~ 40 diretórios que estavam em um diretório pai, sem excluir os próprios diretórios. Acabei fazendo isso manualmente, mas existe uma maneira mais eficiente de fazer isso? Ou seja, existe um comando do Linux que possa fazer isso?

Para uma visão mais clara do que quero dizer:

HomeDirectoryName - > subdiretórioName - > 4 arquivos de informação de simulação

Eu tive o caminho acima, exceto que existem 40 subdiretórios, cada um dos quais ele tem 4 arquivos de simulação. Eu precisava excluir todos os arquivos de informações de simulação sem excluir os diretórios "subdirectoryName".

Pode não ser possível, pois procurei por toda a parte por cerca de uma hora antes de finalmente decidir fazê-lo manualmente.

    
por Red Icing 27.10.2016 / 00:15

3 respostas

4

É muito simples com o comando find - basta usar -type f para localizar apenas arquivos e não diretórios

find /path/to/parent/directory -type f -delete

Por padrão, find recorre a subdiretórios, então encontrará todos os arquivos na árvore a partir deste ponto.

    
por Zanna 27.10.2016 / 00:18
3

do diretório pai executado

find -type f -exec rm {} \;

para remover cada arquivo individualmente ou, alternativamente,

find -type f -exec rm {} +

para enfileirar vários arquivos em rm de cada vez.

Para entusiastas de python, aqui está outra solução:

 python -c 'import os;[os.unlink(os.path.join(r,f)) for r,d,fs in os.walk(".") for f in fs]'
    
por Sergiy Kolodyazhnyy 27.10.2016 / 00:17
0

Do diretório pai

rm */*

removerá os 160 arquivos de informação de simulação sem remover os 40 diretórios que contêm os arquivos.

(Não importa neste caso, mas pode ser útil no futuro saber que rm nunca removerá um diretório, a menos que você o solicite explicitamente com -r flag.)

    
por MJD 27.10.2016 / 03:25