根据文件名将 Google 云存储桶中的多个文件复制到不同的目录
Copying multiple files inside a Google Cloud bucket to different directories based on file name
假设我在不同的子目录中有多个文件,名称如 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>
您可以为此编写一个简单的 BASH 脚本。代码会非常简单,因为 gsutil supports wildcards 并且它可以递归地深入 sub-directories 来找到你的文件。
#!/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 以及类似的通配符策略。
假设我在不同的子目录中有多个文件,名称如 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>
您可以为此编写一个简单的 BASH 脚本。代码会非常简单,因为 gsutil supports wildcards 并且它可以递归地深入 sub-directories 来找到你的文件。
#!/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 以及类似的通配符策略。