如何仅列出名称中包含两个数字的文件?
我这样做了ls *[0-9]*[0-9]*
,但似乎这不是正确的,因为它显示名称中包含 4 位数字的其他文件。
如何仅列出以两个字母命名的 txt 文件?
为此我做了ls ??.txt
,但我不知道如何仅列出以字母命名的文件。
我正在使用 bash。
答案1
在 中*[0-9]*[0-9]*
,星号可以匹配任何内容,甚至可以匹配更多字母。类似的东西1234.txt
确实有两个数字,即使这不是英语中通常的表达方式。
您需要匹配“任意数量的非数字字符”的东西来替换星号,而这对于常规的 glob 来说很难做到。不过,您可以使用 ksh 风格的扩展 glob 来做到这一点。例如在 Bash 中:
#!/bin/bash
shopt -s extglob
ls *([^0-9])[0-9]*([^0-9])[0-9]*([^0-9])
(另一种方法是循环遍历匹配的文件名列表*[0-9]*[0-9]*
,并过滤掉也匹配的文件名*[0-9]*[0-9]*[0-9]*
。无论哪种方式,它都不是很漂亮。)
任意两个字母(仅),后跟的.txt
都是[[:alpha:]][[:alpha:]].txt
。