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

Deleting everything in directory except for two specific folders

我正在尝试删除目录中的所有内容,但我知道其名称的两个文件夹除外。假设这两个文件夹名为 "dont_delete1" 和 "dont_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