如何删除不在集合中的所有文件

How to delete all files not in a set

我有一个包含文件名列表的纯文本文件。例如,

A.doc
E.doc
F.pdf

我想删除当前目录中除那些文件之外的所有文件。

这可以在 bash 完成吗?

假设要删除的文件列表是goodfiles.txt。那么:

ls | grep -vx -f goodfiles.txt

为您提供要删除的 "other" 个文件的列表。如果您确认这些是您要删除的文件,则:

ls | grep -vx -f goodfiles.txt | xargs -d '\n' rm