bash 中点的通配符是什么?

What's the wildcard for dot in bash?

我有 0001.file1.email.data.spam.txt 和 0001.file1.email.data.spam_1.txt

这样的文件

现在我想删除所有以“_1.txt”结尾的文件,我尝试使用"rm -rf *spam_1.txt",但找不到文件。可能是因为 * 不能被视为点。

点是一个简单匹配自身的文字字符。

*通配符匹配任何字符序列,?通配符匹配任何单个字符,但通配符匹配将忽略开头的文件一个点,除非你启用了 dotglob(默认情况下它是关闭的)。

您可以轻松地检查哪些文件与通配符表达式匹配,例如

printf '>>%s<<\n' *spam_1.txt

>>...<< 装饰只是为了方便查看任何前导或尾随空格,并非绝对必要。)

在没有 nullglob 的情况下,如果没有找到任何匹配项,上面将打印通配符本身。还要检查 failglob,如果通配符不匹配任何内容,它会导致打印错误并中止命令。