有一个文件夹,应用程序在其中生成不同的文件,如下所示。
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做的,如下所示。
#!/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`有人能帮我改进上面的脚本来达到这个目的吗?
发布于 2022-11-07 11:20:27
您可能需要泛化您的脚本以处理Goa*以外的多个文件名。假设csv文件位于/abc/def目录下(而不是子目录中),请尝试:
#!/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请注意,它不考虑这种情况,有多个文件名,它们共享相同的城市名称和不同的数字。
https://stackoverflow.com/questions/74343204
复制相似问题