linux - 在 Linux 中删除所有没有以下扩展名的文件

标签 linux ssh find rm

我有一个扩展列表:

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,因为它会在删除前列出所有文件。如果您的列表很全面,这可能会变得乏味,因此您可以自行决定是否包含它。

使用此删除大量文件可能危险。一旦删除,您将永远无法取回它们。因此,请确保在删除列表之前先运行不带 rmfind 命令以彻底检查列表。

更新:

aculich 的评论所述,您还可以执行以下操作 -

find /path/to/files ! -name "*.avi" -type f -delete

-type f 将确保它只会查找删除 常规文件 并且不会触及任何目录、符号链接(symbolic link)等

关于linux - 在 Linux 中删除所有没有以下扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642211/

相关文章:

SSH:仅接受来自本地主机的密码连接

linux - 在 Oracle Enterprise Linux 5 上安装 git 存储库 -- SSH 问题

C++ IDE 在特定命名空间内搜索

sqlplus - 定期将结果写入文件

linux - 后台运行Linux命令,关闭SSH后继续运行

Bash 查找,排除父项?

Excel VBA .查找范围异常

java - java中如何进行搜索?

linux - 100 个 docker 容器与 100 台小型机器

linux - 无法在 bash 脚本中生成 grep 命令结果