如何指定排除某些文件的 shell 模式?

Jar*_*aus 4 shell pattern-matching

例如,我想删除目录中的所有文件,除了.tar它们来自哪里的文件。我可以做这样的事情:

find . -maxdepth 0 | grep -v '.tar$' | xargs rm -f
Run Code Online (Sandbox Code Playgroud)

但是有没有办法只使用 rm 和shell 模式匹配bash如果使用 vanilla 无法完成,请随意使用或其他常用shell 或扩展选项指定它sh

我发现了一个类似的问题,即使用 find 避免目录和子目录,但不使用 shell 模式。

Cia*_*ian 9

您可以使用扩展的通配符来做到这一点。

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

然后

rm !(file.tar)
Run Code Online (Sandbox Code Playgroud)

这至少适用于 bash 3.2.39


归档时间:

查看次数:

1922 次

最近记录:

16 年,2 月 前