我有file123.txt
,file.txt
但是当我运行ls -l file[0-9]*.txt
时,我只会file123.txt
。
如何获取这两个文件?我认为*
表示“0或更多”,但它不起作用。 (我正在使用ksh,如果相关的话)。
答案 0 :(得分:3)
是模式匹配,而不是正则表达式。
[0-9]
和*
是不同的模式。 *
不是正则表达式中的修饰符。
* Matches any string, including the null string.
[...] Matches any one of the enclosed characters.
您可以使用模式列表,其中*
是所附模式列表的前缀
*(pattern-list) Matches zero or more occurrences of the given patterns.
ls file*([0-9]).txt
将是零或更多数字的语法。
$ ls file*.txt
file123.txt filea.txt file.txt
$ ls file*([0-9]).txt
file123.txt file.txt
有关详细信息,请参阅'文件名生成'在man ksh
。
可以在此处找到更多示例KSH93 Extended Patterns
答案 1 :(得分:0)
您正在添加数字过滤器,只需将其删除即可返回以“file”开头并以“.txt”结尾的文件:
ls -l file*.txt