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

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

这是我的/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

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

答案1

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

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

find -name a -o -name b

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

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

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

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

还从结果中排除当前目录

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

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

find -maxdepth 1 ! -name a ! -name b ! -name . -exec rm -rv {} \;

答案2

我使用此命令删除当前目录中除选定文件/文件夹之外的所有文件/文件夹(包括隐藏的文件/文件夹)。

find . -maxdepth 1 ! -name "file1.php" ! -name "file2.js" ! -name "dir1" ! -name "dir2" ! -name . -exec rm -r {} \;

相关内容