Com o GNU find
:
find "Parent folder A" "Parent folder B" ... -mindepth 1 -delete
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
.
.
.
.
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"/* ...
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
.
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
Tags bash