Como excluir todos, exceto para uma pasta específica sob a pasta pai

3

Então aqui está o conteúdo na minha pasta /html .

[root@ip-10-0-7-121 html]# ls
a             wp-activate.php       wp-content         wp-mail.php
b             wp-admin              wp-cron.php        wp-settings.php
healthy.html  wp-blog-header.php    wp-includes        wp-signup.php
index.php     wp-comments-post.php  wp-links-opml.php  wp-trackback.php
license.txt   wp-config.php         wp-load.php        xmlrpc.php
readme.html   wp-config-sample.php  wp-login.php

Desejo excluir tudo, exceto a pasta a e b sem precisar mover a pasta a / b para outra pasta. Qual é o comando para fazer isso?

    
por The One 03.08.2016 / 06:53

1 resposta

10

Você pode usar find com uma negação (por sua conta e risco).

encontre todos os arquivos e pastas chamados "a" ou "b":

find -name a -o -name b

encontre todos os arquivos e pastas com o nome "a" ou "b" no diretório atual "

find -maxdepth 1 -name a -o -name b

encontre todos os arquivos e pastas não nomeados "a" e não nomeados "b" no diretório atual:

find -maxdepth 1 ! -name a ! -name b

também exclui o diretório atual do resultado

find -maxdepth 1 ! -name a ! -name b ! -name .

agora você pode usar rm para excluir todos os elementos fundados:

find -maxdepth 1 ! -name a ! -name b ! -name . -exec rm -rv {} \;
    
por 03.08.2016 / 07:57