使用 linux 进行全球定位

使用 linux 进行全球定位

如何仅列出名称中包含两个数字的文件?

我这样做了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

相关内容