You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep筛选仅含一个英文句点的文件名?

用Grep筛选仅含一个句点的文件名

当然可以用grep实现这个需求!核心是写一个精准的正则表达式,确保文件名里恰好只有一个英文句点,且这个句点既不在文件名开头也不在结尾。

实现命令

ls -1 | grep '^[^.]*\.[^.]*$'

正则表达式拆解

让我们逐个解析正则里的每个部分:

  • ^:锚定到字符串开头,确保匹配从文件名的第一个字符开始
  • [^.]*:匹配任意数量(包括0个)非句点的字符,对应文件名的“主名”部分
  • \.:匹配一个实际的句点(.在正则中是通配符,必须用反斜杠转义才能匹配真实的句点)
  • [^.]*:再次匹配任意数量非句点的字符,对应文件名的“扩展名”部分
  • $:锚定到字符串结尾,确保整个文件名中没有多余的句点

效果验证

将你给出的文件名列表输入这个命令,会精准输出你想要的结果:

  • 1234.txt
  • 123.doc1
  • 234.jpg
  • 456.php

而包含多个句点的文件(如1234.txt.dev1)、无句点的文件(如tmp、tmppppp)都会被自动排除,完全符合预期。

小提示

如果你的文件名中包含空格或特殊字符,使用ls -1(数字1)强制每个文件名单独占一行,能避免grep匹配出错,这也是上面命令里用ls -1的原因。

内容的提问来源于stack exchange,提问作者Ricky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:56:44