我的目录中有一些文件,其文件名包含数字,其中一些以“d”字符结尾(不一定是扩展名)。以下是一组文件示例:
alle5m6ilsd.d
alle34mails
alle34mailsd
allemails
allemails.d
我想编写 UNIX bash 命令来选择包含数字并以“d”结尾的文件名。所以我的答案应该是:
alle5m6ilsd.d
alle34mailsd
答案1
您可以使用 glob 模式:
*[[:digit:]]*d
*
匹配零个或多个字符[:digit:]
匹配您中的任何数字locale
d
匹配字面意思d
,在最后
如果您不想仅依赖locale
, 对于 ASCII 字符集:
*[0-9]*d
例子:
% ls
alle34mails alle34mailsd alle5m6ilsd.d allemails allemails.d
% ls *[[:digit:]]*d
alle34mailsd alle5m6ilsd.d
答案2
更正后的模式应该是:
*[[:digit:]].*d$
或者
*[0-9].*d$
添加来自heemayl的描述,只需要匹配一个数字即可满足OP的那部分要求。然后需要接受 digital 之后的任意数量的其他字符.*
,其中可能包括其他数字。然后必须有一个文字d
,但它必须锚定到字符串的末尾$
。 heemayl 的模式将无法匹配 OP 的两个示例,并且根据 OP 的条件,会错误地匹配d
直接在数字后面(不一定在末尾)的任何内容。