标签: bash wildcard
我有0001.file1.email.data.spam.txt和0001.file1.email.data.spam_1.txt之类的文件
现在,我想删除所有以“ _1.txt”结尾的文件,我尝试使用“ rm -rf * spam_1.txt”,但是找不到文件。也许是因为*无法视为点。
答案 0 :(得分:2)
点是一个文字字符,可以简单地与自己匹配。
*通配符可以匹配任何字符序列,而?通配符可以匹配任何单个字符,但是通配符匹配将忽略以开头的文件,除非您有dotglob已启用(默认情况下处于关闭状态)。
*
?
dotglob
您可以轻松地检查通配符表达式匹配哪些文件,例如
printf '>>%s<<\n' *spam_1.txt
(>> ... <<装饰只是为了易于查看任何前导或尾随空格,并非绝对必要。)
>>
<<
在没有nullglob的情况下,如果找不到任何匹配项,则上面的命令将打印通配符本身。另外请检查failglob,如果通配符不匹配,则会导致打印错误并中止命令。
nullglob
failglob