首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Linux中查找扩展名文件

如何在Linux中查找扩展名文件
EN

Stack Overflow用户
提问于 2018-03-22 11:54:23
回答 2查看 65关注 0票数 1

我想在文件扩展名中找到有日期的文件。在具有下列文件的文件夹中:

代码语言:javascript
复制
jvm-app-0.log.20180124.0000
jvm-app-0.log.20180124.0341
jvm-app-0.log.20180124.0341.tz
jvm-app-0.log.20180124.0355

我只想找到

代码语言:javascript
复制
jvm-app-0.log.20180124.0000
jvm-app-0.log.20180124.0341
jvm-app-0.log.20180124.0355

编辑:如果第二个块也是可选的。例如:

代码语言:javascript
复制
access.log.20180124
access.log.20180125

我试过以下几点:

代码语言:javascript
复制
find . * | grep "\*\.[0-9]{8}\.\*"
find . -regextype posix-egrep -regex '*\.[0-9+]\.[0-9+]'
find . -regextype posix-egrep -regex '*\.[0-9+]\.*'
find . -regextype posix-egrep -regex '\.[0-9+]\.*'
find . -regextype sed -regex "*.{[0-9]+\.[0-9]+}"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-22 11:59:16

代码语言:javascript
复制
find . -regex '.*\.[0-9]+'
  • 在前面使用.*而不是*来匹配任何前缀。
  • +需要位于方括号之外。
  • -regextype是不必要的。

如果启用了extglob,则可以在shell中直接执行此操作:

代码语言:javascript
复制
$ shopt -s extglob
$ ls *.+([0-9])
jvm-app-0.log.20180124.0000  jvm-app-0.log.20180124.0341  jvm-app-0.log.20180124.0355

如果您想要递归搜索,也可以打开globstar

代码语言:javascript
复制
$ shopt -s extglob globstar
$ ls **/*.+([0-9])
jvm-app-0.log.20180124.0000  jvm-app-0.log.20180124.0341  jvm-app-0.log.20180124.0355
票数 3
EN

Stack Overflow用户

发布于 2018-03-22 11:57:26

你已经接近了,你可以使用这个find

代码语言:javascript
复制
find . -regextype posix-egrep -regex '.*\.[0-9]+\.[0-9]+$'

以上find将需要gnu find。要使它在其他find版本(如BSD )上工作,请使用:

代码语言:javascript
复制
find . -regex '.*\.[0-9]*\.[0-9]*$'

如果您使用的是bash,您也可以在globstar中使用extglob,避免 find

代码语言:javascript
复制
shopt -s globstar extglob nullglob

printf '%s\n' **/*.+([0-9])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49428043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档