使用gsutil rsync时如何编写正则仅上传.csv格式文件
适配需求的gsutil rsync正则写法
gsutil rsync的-x参数逻辑为排除所有命中正则规则的文件,因此我们只需要编写匹配「所有非.csv后缀文件」的正则即可实现需求。
可用正则
^.*(?<!\.csv)$
正则逻辑说明
^匹配文件路径的起始位置.*匹配路径中任意长度的任意字符(?<!\.csv)为反向否定后置断言,要求路径末尾不能匹配.csv字符串$匹配文件路径的结束位置
完整执行命令示例
Linux/macOS环境
gsutil rsync -r -x '^.*(?<!\.csv)$' /本地设备根目录 gs://你的目标存储桶名称
Windows环境
gsutil rsync -r -x "^.*(?<!\.csv)$" C:\本地设备根目录 gs://你的目标存储桶名称
效果验证
对你给出的测试路径匹配结果如下:
folder/folder/hello.csv:未命中排除规则,正常上传folder/folder/results.pdf:命中排除规则,不上传folder/folder2/test.txt:命中排除规则,不上传folder/folder3/hello2.csv:未命中排除规则,正常上传
补充说明
如果需要同时支持大写后缀的CSV文件(比如.CSV/.Csv等),可以将正则替换为:
^.*(?<!\.[cC][sS][vV])$
内容的提问来源于stack exchange,提问作者kennycodes
相关产品推荐
相关产品推荐

