正则表达式:过滤 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

相关推荐

  1. 表达式 (用于灵活匹配文本表达式)

    2023-12-27 10:56:03       54 阅读
  2. 常用表达式

    2023-12-27 10:56:03       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-27 10:56:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-27 10:56:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-27 10:56:03       87 阅读
  4. Python语言-面向对象

    2023-12-27 10:56:03       96 阅读

热门阅读

  1. SpEL 的使用

    2023-12-27 10:56:03       62 阅读
  2. 【zookeeper经典应用实战】

    2023-12-27 10:56:03       48 阅读
  3. FB混合C语言编译

    2023-12-27 10:56:03       59 阅读
  4. Linux创建Macvlan网络

    2023-12-27 10:56:03       74 阅读
  5. 鸿蒙插槽?全局插槽和局部插槽?数据不更新?

    2023-12-27 10:56:03       57 阅读