如何删除除父文件夹下的某些特定文件夹之外的所有内容

The*_*One 7 command-line delete

所以这是我/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
Run Code Online (Sandbox Code Playgroud)

我想删除除文件夹之外的所有内容ab而不必将a/b文件夹移动到另一个文件夹。这样做的命令是什么?

Sca*_*ght 18

您可以使用find否定(风险自负)。

查找所有名为“a”或“b”的文件和文件夹:

find -name a -o -name b
Run Code Online (Sandbox Code Playgroud)

查找当前目录中所有名称为“a”或“b”的文件和文件夹”

find -maxdepth 1 -name a -o -name b
Run Code Online (Sandbox Code Playgroud)

在当前目录中查找所有未命名为“a”且未命名为“b”的文件和文件夹:

find -maxdepth 1 ! -name a ! -name b
Run Code Online (Sandbox Code Playgroud)

还从结果中排除当前目录

find -maxdepth 1 ! -name a ! -name b ! -name .
Run Code Online (Sandbox Code Playgroud)

现在您可以使用rm删除所有已建立的元素:

find -maxdepth 1 ! -name a ! -name b ! -name . -exec rm -rv {} \;
Run Code Online (Sandbox Code Playgroud)