我修改了防火墙规则,并且ufw创建了更改文件的备份。我想确保我没有误删除某些内容,因此运行了以下内容:
$ ls *[[:digit:]*]_[[:digit:]*]
ls: cannot access '*[[:digit:]*]_[[:digit:]*]': No such file or directory
我也尝试过
$ ls *_[[:digit:]*]
ls: cannot access '*_[[:digit:]*]': No such file or directory
这里的下划线有什么问题?
最后,以下工作成功了。但这将匹配以任何数字结尾的任何文件。
$ ls *[[:digit:]*]
after6.rules.20191223_104857 after.rules.20191223_104857 before6.rules.20191223_104857
before.rules.20191223_104857 user6.rules.20191223_104857 user.rules.20191223_104857
如果这有帮助,我的与glob相关的商店设置为
$ shopt | grep glob
dotglob on
extglob on
failglob off
globasciiranges on
globstar on
nocaseglob on
nullglob off
答案 0 :(得分:2)
您假设[[:digit:]*]
的意思是“零个或多个数字”。这不是真的。它匹配一个数字或星号。
您想要的是extglob *([[:digit:]])
:
~/tmp $ ls **([[:digit:]])_*([[:digit:]])
after.rules.20191223_104857 before.rules.20191223_104857 user.rules.20191223_104857
after6.rules.20191223_104857 before6.rules.20191223_104857 user6.rules.20191223_104857
~/tmp $ ls *_*([[:digit:]])
after.rules.20191223_104857 before.rules.20191223_104857 user.rules.20191223_104857
after6.rules.20191223_104857 before6.rules.20191223_104857 user6.rules.20191223_104857