bash - bash 列出特定命名约定的文件
问题描述
操作系统 - Linux (Ubuntu 20.04)
我有一个包含数千个文件的目录。文件名范围从 a.daily.csv 到 abdaily.csv 到 abcdaily.csv 到 abcddaily.csv 到 abcddaily.csv
我面临的挑战是仅列出 a.daily.csv 或 abdaily.csv 等。也就是说,以“daily.csv”作为固定部分,我希望能够将它前面的内容用“。”进行通配符。作为字段之间的分隔符
我尝试了一些通配符,例如?[a-zA-Z0-9] 等但无法实现这一点。请给我一些指导
请注意 a、b、c 等是我用来发布问题的占位符。在现实世界中,a,b,c 是字母数字词
例子 -
PAHKY.daily.csv
TYUI.GHJ.WE.daily.csv
WGGH.FGH.daily.csv
98KJL-GHR.YUI.daily.csv
67HJE.HJQ.ATD.HJ.daily.csv
如果我想列出所有类似于 PAHKY.daily.csv 的文件,其中在 daily.csv 前面只有一个文件(点是分隔符),我该怎么做?
解决方案
如果启用该extglob
选项:
$ shopt -s extglob
您可以使用扩展的模式匹配运算符,例如*(pattern)
零个或多个pattern
. 知道[^.]
匹配除点之外的任何字符,这将导致:
$ ls *([^.]).daily.csv
PAHKY.daily.csv
获取所有a.daily.csv
文件。对于下一组:
$ ls *([^.]).*([^.]).daily.csv
WGGH.FGH.daily.csv 98KJL-GHR.YUI.daily.csv
等等。如果要匹配一个或多个而不是零个或多个,请替换*(pattern)
为。+(pattern)
pattern
推荐阅读
- javascript - Jest - 模拟 JQuery 插件的功能
- go - 使用 sqlmock 时,GORM 预加载会导致问题
- angular - Angular 组件属性类型转换问题
- flutter - 如何在 Flutter 中实现动态 GridView?
- sql-server - 根据日期查找特定产品代码的下一个非空值
- pandas - xlswriter“valign”:“vcenter”不工作
- javascript - Discord.js - 秘密获取用户输入
- reactjs - 使用 React 中的按钮的 onClick 将当前表行值传递给子组件(材料 UI)
- azure-devops - Azure Devops 上的管道失败
- python - RuntimeError:输入类型(torch.cuda.DoubleTensor)和权重类型(torch.cuda.FloatTensor)应该是一样的,我有一些问题