Tente:
cd /opt &&
find . \( \
-path ./etc/config -o \
-path ./etc/nginx -o \
-path ./home -o \
-path ./usr/sbin -o \
-path ./var/mlocate \) -prune -o \( \
-type d -print0 -o -exec rm -f {} + \) |
tr 'cd /opt &&
find . \( \
-path ./etc/config -o \
-path ./etc/nginx -o \
-path ./home -o \
-path ./usr/sbin -o \
-path ./var/mlocate \) -prune -o \( \
-type d -print0 -o -exec rm -f {} + \) |
tr '%pre%\n' '\n%pre%' |
tac |
tr '%pre%\n' '\n%pre%' |
xargs -r0 rmdir
\n' '\n%pre%' |
tac |
tr '%pre%\n' '\n%pre%' |
xargs -r0 rmdir
-prune
garante que nem mesmo digitemos esses diretórios ignorados.
Excluímos arquivos não-diretório nos outros diretórios. E deixe os diretórios processarem depois ( tac
não produzirá nada até que find
termine porque começa com a última linha).
Precisamos passar a lista de diretórios em ordem reversa para rmdir
, já que precisamos excluir o conteúdo antes do próprio diretório. Observe que rmdir
não excluirá diretórios não vazios.
Geralmente, usamos -depth
para processar as folhas antes das ramificações que as contêm, mas não podemos usar -depth
com -prune
. Pelo mesmo motivo, não podemos usar -delete
, pois implica -depth
.