首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本复制文件,重命名并共享到azure blob。

脚本复制文件,重命名并共享到azure blob。
EN

Stack Overflow用户
提问于 2022-11-07 07:25:33
回答 1查看 55关注 0票数 0

有一个文件夹,应用程序在其中生成不同的文件,如下所示。

Delhi_20221234556.csv Melbourne_20123456789.csv Goa_1234567890.csv Sydney_2022345689.csv

脚本应该从文件中删除数字,如下所示,然后将它们复制到Azure blob存储中,在将它们复制到Azure blob之后,它应该将文件随日期移动到归档文件夹中。

Delhi.csv Melbourne.csv Goa.csv Sydney.csv

最初,我是为Goa_1234567890.csv做的,如下所示。

代码语言:javascript
复制
#!/bin/bash
find /abc/def -type f -name 'Goa*' -execdir bash -c 'for f in "$@"; 
do mv "$f" "${f%%_*}.csv"; 
done' bash {} +
./azcopy cp "/abc/def/Goa.csv" "https://<Blobaccount>.blob.core.windows.net/abc\home\xyz?<SAS- Token>"
mv /abc/def/Goa.csv /abc/def/Archive/Goa$(date +%F).csv`

有人能帮我改进上面的脚本来达到这个目的吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 11:20:27

您可能需要泛化您的脚本以处理Goa*以外的多个文件名。假设csv文件位于/abc/def目录下(而不是子目录中),请尝试:

代码语言:javascript
复制
#!/bin/bash

dir="/abc/def"
mkdir -p "$dir"/Archive/

for f in "$dir/"*.csv; do
    if [[ -f $f ]]; then
        new="${f%%_*}.csv"
        mv -- "$f" "$new"
        ./azcopy cp "$new" "https://<Blobaccount>.blob.core.windows.net/abc\home\xyz?<SAS- Token>"
        base="${new##*/}"
        mv -- "$new" "$dir/Archive/${base%.csv}$(date +%F).csv"
    fi
done

请注意,它不考虑这种情况,有多个文件名,它们共享相同的城市名称和不同的数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74343204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档