是否可以从 rm -rf 中排除某些文件?

是否可以从 rm -rf 中排除某些文件?

我有一个目录,由另一个用户填充,我负责维护它。我想删除其中的所有内容,只保留 2 个具有特定名称的文件。可以这样做吗?rm或者我应该这样做吗:

cp aaa/a ./a && cp aaa/b ./b && rm -rf aaa/* && mv ./a aaa/a && mv ./b aaa/b

aaa目录在哪里,我想要保留的文件是什么a,b,其中还有(至少可能有)其他文件/目录。

有没有更好(且更短)的方法?

答案1

使用 bash 扩展的 glob,给出

$ tree aaa
aaa
├── a
├── b
├── c
├── d
├── e
└── subdir

然后

rm -rf aaa/!(a|b)

树叶

$ tree aaa
aaa
├── a
└── b

0 directories, 2 files

相关内容