bash中点的通配符是什么?

时间:2018-10-31 08:48:50

标签: bash wildcard

我有0001.file1.email.data.spam.txt和0001.file1.email.data.spam_1.txt之类的文件

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

1 个答案:

答案 0 :(得分:2)

点是一个文字字符,可以简单地与自己匹配。

*通配符可以匹配任何字符序列,而?通配符可以匹配任何单个字符,但是通配符匹配将忽略开头的文件,除非您有dotglob已启用(默认情况下处于关闭状态)。

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

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

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

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