假设我在不同的子目录中有多个文件,它们的名称分别为20060630 AD8,11 +1015.WAV
和20050508_Natoa_Enc1_AD5AK_1.WAV
。现在,我知道所有这些文件都有一个子字符串,例如AD
(在第一个文件中)和AD
,AK
(在第二个文件中)。在顶层目录中,我总共创建了16个类(AD
,AK
,AN
等)。
我想根据匹配的子字符串将所有这些文件复制到各自的目录中。现在使用gsutil
,命令可能会像这样:
gsutil cp gs://bucket/Field/2005/20060630 AD8,11 +1015.WAV gs://bucket/AD/20060630 AD8,11 +1015.WAV
这种方法如何在同一存储桶中自动执行数千个文件的任务?
采用这样的方法是否安全:
if 'AD' in filename:
gsutil cp gs://bucket/<filename> gs://bucket/AD/<filename>
elif 'AK' in filename:
gsutil cp gs://bucket/<filename> gs://bucket/AK/<filename>
答案 0 :(得分:2)
您可以为此编写一个简单的BASH脚本。自gsutil supports wildcards起,代码将非常简单,并且可以递归地潜入子目录中以查找文件。
#!/bin/bash
bucket_name=my-example-bucket
substring_list=(
AD
AK
AN
)
for substring in "${substring_list[@]}"; do
gsutil cp gs://$bucket_name/**/*$substring* gs://$bucket_name/$substring/
done
我还看到您有一些Python的经验,因此您可以选择使用Python Client for Google Cloud Storage和类似的通配符策略。