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/.