exclui subpastas e arquivos sem excluir pasta pai e pasta filha?

0

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\
    
por abhayk 31.08.2016 / 08:53

2 respostas

2
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).

    
por 31.08.2016 / 09:04
0

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/.
    
por 31.08.2016 / 10:42

Tags