Limpar diretórios

0

Eu tenho uma lista de pastas pai; dentro de cada pasta pai eu tenho subpastas e arquivos. Como posso esvaziar as pastas pai - por exemplo, remover todos os arquivos e subpastas e deixar as pastas pai vazias?

Parent folder A
       subfolder aa
       file a
Parent folder B
       file b
       file vv
Parent folder C
       subfolder s
       subfolder n 
        file x
.
.
.
.
    
por Jeff Schaller 16.11.2015 / 17:33

4 respostas

5

Com o GNU find :

find "Parent folder A" "Parent folder B" ... -mindepth 1 -delete
    
por 16.11.2015 / 17:38
3

Como alternativa, diga rm para começar a remover em cada pasta pai:

# set dotglob to have * include files beginning with '.'
shopt -s dotglob
rm -r "Parent folder A"/* "Parent folder B"/* ...
    
por 16.11.2015 / 17:44
0

Supondo que não haja arquivos no diretório de nível superior:

for i in *; do (cd "$i"; rm -rf *); done

ou

for i in *; do (cd "$i"; for j in *; do rm -rf "$j"; done); done

Eu prefiro o último, porque ele não tenta remover * se o diretório estiver vazio e pode ser facilmente modificado para incluir apenas alguns padrões de arquivo. Para algo mais complicado, use find .

    
por 16.11.2015 / 17:45
0

Assumindo que você cwd (diretório de trabalho atual) é onde todas as pastas pai são, você poderia fazer algo assim:

for i in *; do
    [[ -d "$i" ]] || continue
    rm -rf "$i"/*
done
  • Repetir todos os diretórios na pasta atual (ou seja, as pastas pai)
  • remover todos os arquivos e pastas de cada subpasta
por 16.11.2015 / 17:48

Tags