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

问题描述 投票:0回答:3

我需要检索 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 中只提取文件名?

regex filenames ls minio
3个回答
1
投票

您可以在

sed
命令之后通过管道传输以下
mc ls
命令:

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

查看在线演示

详情

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

1
投票

mc 支持 json 输出格式,你也可以这样做:

./mc ls myminio/bucket1 --json | jq ".key"
"files1/"
"files2/"
"file1.ext"
"file2.ext"

0
投票

使用--print {base}选项

mc find minio/bucket1 --print {base}
© www.soinside.com 2019 - 2024. All rights reserved.