Unix 删除目录中除两个特定文件夹之外的所有内容

Unix 删除目录中除两个特定文件夹之外的所有内容,unix,command-line,command,Unix,Command Line,Command,我正在尝试删除目录中的所有内容,除了我知道名称的两个文件夹。假设这两个文件夹分别称为“don_delete1”和“don_delete2”。在当前目录中,还存在其他文件夹和文件 我试过了 rm -r !(dont_delete1|dont_delete2) 但这需要我shopt-s extglob,由于某些限制,我不能使用它 所以我转向 find . \! -name [folder name] -delete 我已经在一个文件夹上测试过了,它可以正常工作。但是我想不出一种方法来对多个文件

我正在尝试删除目录中的所有内容,除了我知道名称的两个文件夹。假设这两个文件夹分别称为“don_delete1”和“don_delete2”。在当前目录中,还存在其他文件夹和文件

我试过了

rm -r !(dont_delete1|dont_delete2) 
但这需要我
shopt-s extglob
,由于某些限制,我不能使用它

所以我转向

find . \! -name [folder name] -delete

我已经在一个文件夹上测试过了,它可以正常工作。但是我想不出一种方法来对多个文件夹使用上面的命令。我尝试过各种我认为可行的命令,但都没有成功。

许多不同的解决方案,下面是一个很容易理解的解决方案:

$ls | grep -v dont_delete1 | grep -v  dont_delete2 | xargs rm -rf