我将如何使用 rm 删除没有特定通配符的所有文件?

cha*_*aps 5 rm

使用rm *text*您可以删除所有包含特定字符串的文件。我将如何使它删除具有特定通配符的文件之外的每个文件?

我尝试使用我发现的其他东西,例如:

find . -type f -print0 | xargs --null grep -Z -L 'text' | xargs --null rm
Run Code Online (Sandbox Code Playgroud)

或者

grep -r -L -Z 'text' . | xargs --null rm
Run Code Online (Sandbox Code Playgroud)

但这些不起作用。相反,他们正在删除给定目录中的所有文件。

我怎么能这样做?

vid*_*rlo 7

您可以通过启用扩展的 glob 来做到这一点:

shopt -s extglob
Run Code Online (Sandbox Code Playgroud)

现在你可以做例如

ls !(*.pdf)
Run Code Online (Sandbox Code Playgroud)

或者在你的例子中

rm !(*text*)
Run Code Online (Sandbox Code Playgroud)