Score:0

เชลล์สคริปต์เพื่อคัดลอกหลายไฟล์

ธง gb

ฉันกำลังพยายามทำเชลล์สคริปต์ที่จะคัดลอกไฟล์จำนวนมาก แต่มีปัญหากับการตั้งค่าการวนซ้ำเพื่ออ่านไฟล์:

aws s3 cp s3://noaa-bdp-pds/gdas.YYYYMMDD/00/atmos/hdas.t00z.sfcf000.nc s3://s3internal/raw/HDAS/hdas.YYYYMMDD_00Z.nc

YYYY, MM, DD คือตัวเลขที่ฉันต้องวนซ้ำ

ฉันต้องวนซ้ำทุกปี ทุกเดือน และวันที่เพื่อบันทึกไฟล์ทั้งหมด แจ้งให้เราทราบว่าสามารถทำได้หรือไม่

ขอบคุณ

waltinator avatar
it flag
อ่าน `man seq`
kr flag
เพิ่มชุดค่าผสม YYYYMMDD ที่มีทั้งหมดลงในอาร์เรย์และใช้ for-loop เพื่อรันคำสั่ง copy สำหรับการวนซ้ำแต่ละครั้ง
Score:0
ธง cn

คุณสามารถทำได้โดยใช้ aws s3 ซิงค์ ด้วยสัญลักษณ์แทนและ --ดรายรัน ซึ่งสร้างผลลัพธ์:

$aws s3 ซิงค์ s3://noaa-bdp-pds \
  --ไม่รวม "*" --รวม "gdas.*/00/atmos/hdas.t00z.sfcf000.nc"

(ดรายรัน) ดาวน์โหลด s3://noaa-bdp-pds/gdas.20210001/00/atmos/hdas.t00z.sfcf000.nc ถึง noaa-bdp-pds /gdas.20210001/00/atmos/hdas.t00z.sfcf000 เอ็นซี
 ...
 ...

อย่าลืมใช้ไดเร็กทอรีว่าง มิฉะนั้นอาจรบกวนเอาต์พุต

ตอนนี้ คุณสามารถใช้สิ่งนี้เพื่อสร้างลูป:

#!/bin/bash
สำหรับบรรทัดใน $( \
    aws s3 ซิงค์ s3://noaa-bdp-pds \
    --ไม่รวม "*" --รวม "gdas.*/00/atmos/hdas.t00z.sfcf000.nc" | awk '/s3:\/\//{print $3}' --dryrun \
); ทำ
    [[ $line =~ .*/gdas.(.*)/00/.* ]] && \
    echo aws s3 cp ${BASH_REMATCH[0]} s3://s3internal/raw/HDAS/hdas.${BASH_REMATCH[1]}_00Z.nc
เสร็จแล้ว

เมื่อคุณพอใจกับผลลัพธ์แล้ว ให้ลบออก เสียงสะท้อน เพื่อคัดลอกไฟล์

bac0n avatar
cn flag
ที่เกี่ยวข้อง: [การรองรับไวด์การ์ด AWS S3 ls](https://github.com/aws/aws-cli/issues/3784)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา