【问题标题】:How to get just filename from minio (mc) ls如何从 minio (mc) ls 获取文件名
【发布时间】:2021-05-14 09:48:31
【问题描述】:
我需要检索 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
【解决方案1】:
您可以在mc ls 命令之后通过管道传递以下sed 命令:
sed -n 's/^\[[^][]*][[:blank:]]*[^[:blank:]]*[[:blank:]]\(.*\.gpkg\)$/\1/p'
请参阅online demo。
详情:
-
-n - 禁止默认行输出
-
s - 替换命令
-
^\[[^][]*][[:blank:]]*[^[:blank:]]*[[:blank:]]*\(.*\.gpkg\)$ - 匹配的正则表达式
-
^ - 字符串开头
-
\[[^][]*] - [ 和 ] 之间的子字符串,里面没有方括号
-
[[:blank:]]* - 零个或多个水平空格
-
[^[:blank:]]* - 零个或多个非水平空白字符
-
[[:blank:]]* - 零个或多个水平空格
-
\(.*\.gpkg\) - 第 1 组:任何文本,然后是 .gpkg
-
$ - 字符串结束
-
\1 - 将匹配替换为第 1 组值
-
p - 打印替换结果。