bash - 通过重命名将本地文件夹中的文件复制到 gcs
问题描述
我编写了以下脚本,其目的是复制 gcs 中指定文件夹下给定路径中的文件:
#!/usr/bin/env bash
set -e
set -u
SOURCE=$1
CI_PROJECT_DIR="/home/user/project-ingestion"
DICT_PATH="${CI_PROJECT_DIR}/src/main/resources/dictionaries/$SOURCE"
DICT_BUCKETS="dict-bucket"
dictionaries="dictionaries"
DATE=`date '+%Y_%m_%d'`
for dictionary in $DICT_PATH/*.json; do
FOLDER=${dictionary//+(*\/|.*)}
TARGET="gs://$DICT_BUCKETS/$dictionaries/$SOURCE/$FOLDER/$FOLDER'_'$DATE.json"
gsutil cp $dictionary $TARGET
done
所以如果我有我的json
文件,
/home/user/project-ingestion/src/main/resources/dictionaries/source/factories.json
我想复制到,
gs://dict-bucket/factories/factories_2019_05_04.json
我编写的脚本将整个字典树复制到给定的目标。请知道如何解决这个问题
解决方案
看起来问题在于以下几行,
# parent path of $dictionary is not truncated
FOLDER=${dictionary//+(*\/|.*)}
# TARGET will contain single quotes
TARGET="gs://$DICT_BUCKETS/$dictionaries/$SOURCE/$FOLDER/$FOLDER'_'$DATE.json"
我不确定您将如何构建目标路径,但以下可能会有所帮助(在 for 循环块内)。
filename=$(basename $dictionary) # e.g. factories.json
file_prefix=${filename%%.*} # e.g. factories (remove everything after first period)
TARGET="gs://fixed_path/${file_prefix}/${file_prefix}_${DATE}.json" # change this as per your need
推荐阅读
- javascript - 如何通过单击html表格中的按钮来设置类
- reactjs - React-Typescript:JSX 元素类型“组件”没有任何构造或调用签名
- swift - 在 SwiftUI RealityKit 应用中加载 DAE 文件
- javascript - 固定每行的元素编号
- java - 生成没有开放 2x2 房间/空间的迷宫
- python - 一页上的多个表单Django
- java - 如何忽略非整数输入并继续输入
- python - Python,返回django rest框架中业务逻辑生成的html文件
- docker-compose - FluentMySQL 迁移在使用 docker-compose 构建时失败,但在从 Xcode 构建时失败
- angular - 有没有办法将服务从父组件注入到组件中?