删除没有特定扩展名的文件

Removing files without a specific extension

我有一个文件列表 - 有些以 .txt 结尾,有些则没有。我如何 运行 删除所有不以 txt 结尾的文件的命令?

我试过了:

rm *.[^txt]

但这没有用?

试试这个:

rm !(*.txt)

它应该删除所有不以 .txt 结尾的文件

首先执行 shopt -s extglob 以确保启用扩展模式匹配功能。
shopt -s 将向您显示所有已启用的可选 shell 行为。

如果您使用的是bash,您可以开启extglob shell选项:

shopt -s extglob

然后您可以使用扩展模式语法 !(pattern) 来匹配所有不匹配 pattern 的文件名。首先,使用 echo:

进行测试
echo !(*.txt)

假设输出是您要删除的文件,扣动扳机:

rm !(*.txt)