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