如何从 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
- 打印替换结果。
我需要检索 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
- 打印替换结果。