本文主要是介绍正则表达式:过滤 S3 上以 _$folder$ 结尾的占位文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当我们使用命令行批量从 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
这篇关于正则表达式:过滤 S3 上以 _$folder$ 结尾的占位文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!