rm -rf /path/to/root/*/*
NOTA: Por favor, teste primeiro fazendo uma estrutura de diretório de teste similar. Seu shell pode não suportar este tipo de sintaxe (testei no bash e zsh).
Para este tipo de dir structure:
\rdwlhsdevserver\root\user1\folders\testdat.txt
\rdwlhsdevserver\root\abhay\testdat.txt
\rdwlhsdevserver\root\testuser\folders1\folder2\testdat.txt
\rdwlhsdevserver\root\devadmin\input\testdat.txt
\rdwlhsdevserver\root\admin\testdata\testdat.txt
Eu sei que posso usar rm -rf <<folderPath>> para excluir a pasta pai e todas as subpastas, mas desejo excluir todas as pastas e arquivos, exceto \\rdwlhsdevserver\root\Childfolder
Depois de executar cmd , a saída deve ser como:
\rdwlhsdevserver\root\user1\
\rdwlhsdevserver\root\abhay\
\rdwlhsdevserver\root\testuser\
\rdwlhsdevserver\root\devadmin\
\rdwlhsdevserver\root\admin\
Com GNU ou BSD find :
find /path/to/root -mindepth 2 -delete
com zsh :
rm -rf /path/to/root/*/*(D)
No entanto, observe que, se houver links simbólicos para os diretórios em /path/to/root , eles serão seguidos para remover os arquivos neles. Você também pode se deparar com um erro Arg list too big , que pode ser resolvido ativando rm builtin:
zmodload zsh/files
rm -rf /path/to/root/*/.(D)
(a versão interna do rm pode remover . )
Se você não quiser seguir links simbólicos:
zmodload zsh/files
dirs=(/path/to/root/*(D/)) && rm -rf $^dirs/.