如何从 minio (mc) ls 中获取文件名

How to get just filename from minio (mc) ls

我需要检索 bash 脚本的文件名。我以为 mc ls 可以做 ls 可以做的一切,但我似乎错了。所以现在我正在努力 regex.

当我执行 mc ls minio/bucket1/ 时,我会得到:

[2021-05-14 11:15:18 CEST]     0B files1/
[2021-05-14 11:15:18 CEST]     0B files2/
[2021-05-14 11:15:19 CEST]     0B file1.ext
[2021-05-14 11:15:18 CEST]     0B file2.ext

如何只提取 bash 中的文件名?

您可以在 mc ls 命令后通过管道输入以下 sed 命令:

sed -n 's/^\[[^][]*][[:blank:]]*[^[:blank:]]*[[:blank:]]\(.*\.gpkg\)$//p'

参见online demo

详情:

  • -n - 抑制默认行输出
  • s - 替换命令
  • ^\[[^][]*][[:blank:]]*[^[:blank:]]*[[:blank:]]*\(.*\.gpkg\)$ - 匹配的正则表达式
    • ^ - 字符串开头
    • \[[^][]*] - [] 之间没有方括号的子字符串
    • [[:blank:]]* - 零个或多个水平空格
    • [^[:blank:]]* - 零个或多个非水平空白字符
    • [[:blank:]]* - 零个或多个水平空格
    • \(.*\.gpkg\) - 第 1 组:任何文本,然后 .gpkg
    • $ - 字符串结尾
  • </code> - 用第 1 组值 </li> 替换匹配项 <li><code>p - 打印替换结果。