正则表达式:过滤 S3 上以 _$folder$ 结尾的占位文件
2023-12-26 11:44:08
当我们使用命令行批量从 S3 上拷贝文件或统计文件数量时,希望能排除掉 S3 上以 _$folder$
结尾的占位文件,这个正则表达式应该怎么写呢?
Shell 实现
以下是统计 S3 某个位置下的除 _$folder$
结尾的文件的文件数量:
aws s3 ls --recursive s3://my-s3-location/ | grep -v '.*_\$folder\$' | wc -l
使用 grep 过滤是比较简单的,因为 grep 有一个 -v,--invert-match
参数:“反向匹配”,即:过滤掉match 上的行。
Java 实现
相较而言,如果是 java 程序,这个正则就很有些难写了,应为 java 正则接口并没有“反向匹配”这种设置,这个 正则要这样写:^(?!.*[_]\$folder\$$).*$
,我们以 s3-dist-cp
这个命令为例,它的 --srcPattern
参数就是一个 Java 的正则表达式,用于匹配需要拷贝的文件,如果我们要在拷贝时排除掉 S3 上那些恼人的 _$folder$
结尾的文件,应该这样写:
nohup s3-dist-cp \
-Dmapreduce.job.reduces=599 \
--src=s3://my-hbase-snapshots/usertable-20231205 \
--dest=hdfs://${SINK_CLUSTER_NAMENODES}:8020/user/hbase/ \
--srcPattern='^(?!.*[_]\$folder\$$).*$' \
--multipartUploadChunkSize=1024 &> s3-dist-cp.out &
tail -f s3-dist-cp.out
文章来源:https://blog.csdn.net/bluishglc/article/details/135189972
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!