gpt4 book ai didi

linux - 搜索包含多个 "dot"字符的文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:02 25 4
gpt4 key购买 nike

在 Linux 中,如何在不编写脚本的情况下使用查找和正则表达式或类似方式来搜索具有多个“点”但忽略扩展名的文件。

例如,搜索以下文件只会返回第二个文件。在此示例中,“.ext”是扩展名。

testing1234hellothisisafile.ext
testing.1234.hello.this.is.a.file.ext

该解决方案应适用于文件名中的一个或多个点(忽略扩展点)。这也适用于任何文件,即具有任何文件扩展名

提前致谢

最佳答案

因此,如果我理解正确,您希望获得名称中至少包含两个附加点的文件名。这样做:

$ find -regex ".*\.+[^.]*\.+[^.]*\.+.*"
./testing.1234.hello.this.is.a.file.ext
./testing1234.hellothisisafile.ext
$ find -regex ".*\.+[^.]*\.+[^.]*\.+[^.]*\.+.*"
./testing.1234.hello.this.is.a.file.ext

关键点检测部分是\.+(至少一个点),再加上分隔任何东西(除了一个点,但是前面的部分已经涵盖了它;一种针对贪婪匹配的安全措施) [^.]*。它们一起构成了正则表达式的核心部分——我们不关心之前或之后是什么,只关心某处有三个点。三个,因为当前目录中的那个也很重要 — 如果您要从其他地方搜索,请删除一个 \.+[^.]* 组:

$ find delme/ -regex ".*\.+[^.]*\.+[^.]*\.+[^.]*\.+.*"
delme/testing.1234.hello.this.is.a.file.ext
$ find delme/ -regex ".*\.+[^.]*\.+[^.]*\.+.*"
delme/testing.1234.hello.this.is.a.file.ext

在这种情况下,结果是相同的,因为名称包含很多点,但第二个正则表达式是正确的。

关于linux - 搜索包含多个 "dot"字符的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11900492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com