我有一个扩展列表:
avi,mkv,wmv,mp4,mp5,flv,M4V,mpeg,mov,m1v,m2v,3gp,avchd
我想删除所有没有以下扩展名的文件以及 linux 目录中没有扩展名的文件。
如何使用 rm linux 命令执行此操作?
最佳答案
您首先必须找出不包含这些扩展名的文件。您可以使用 find
命令非常轻松地完成此操作。您可以基于以下命令构建 -
find /path/to/files ! -name "*.avi" -type f -exec rm -i {} \;
您还可以使用 -regex
而不是 -name
来输入复杂的搜索模式。 !
是否定搜索。因此它将有效地列出那些不包含这些扩展名的文件。
最好执行rm -i
,因为它会在删除前列出所有文件。如果您的列表很全面,这可能会变得乏味,因此您可以自行决定是否包含它。
使用此删除大量文件可能危险。一旦删除,您将永远无法取回它们。因此,请确保在删除列表之前先运行不带 rm
的 find
命令以彻底检查列表。
更新:
如 aculich
的评论所述,您还可以执行以下操作 -
find /path/to/files ! -name "*.avi" -type f -delete
-type f
将确保它只会查找
和删除
常规文件 并且不会触及任何目录、符号链接(symbolic link)等。
关于linux - 在 Linux 中删除所有没有以下扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642211/