簡體   English   中英

RClone / Bash-循環瀏覽並單獨下載目錄中的所有文件

[英]RClone / Bash - Loop through and download all files in directory individually

我有一個我完全無法解決的問題。

我已經安裝了RClone並在CentOS上運行,我正在嘗試編寫腳本來執行以下操作

  • 列出目錄中的所有文件(rclone ls MsOneDrive:/ Dashcam / Saved)
  • 一次下載一個文件
  • 在每個文件上運行命令
  • 重新上傳文件
  • 刪除原件

當我執行

rclone ls MsOneDrive:/Dashcam/Saved

我得到以下版本的更長版本。 其中,數字是文件大小,第二部分是文件名。

EG“文件大小filename.AVI”

511810664 00200367.AVI
509582440 01560041.AVI
 86225016 03510005.AVI
  8389816 03580007.AVI
503356520 05220203.AVI
502537320 06320079.AVI
508238952 06320080.AVI

有什么方法可以將其解析為一個foreach循環,或者類似的方法可以讓我在循環內執行這些操作?

遵循以下原則(忽略foreach循環的語法)

#!/bin/bash
foreach {i} (rclone ls MsOneDrive:/Dashcam/Saved)
    rclone copy $i <local>
    localOperation 
    rclone copy <local> <remote>
    rclone rm <remote>
 fi

您可以使用如下形式:

#!/bin/bash
while read -r size name; do
    rclone copy $name <local>
    (( $(stat -c %s <local>) == size )) || { echo ERROR; exit; }

    localOperation 
    rclone copy <local> <remote>
    rclone rm <remote>
done < <(rclone ls MsOneDrive:/Dashcam/Saved)

這樣做的優點之一是您可以計算總計:

#!/bin/bash
total=0
while read -r size name; do
    ((total+=size))
    ....
done < <(rclone ls MsOneDrive:/Dashcam/Saved)
printf "Total processed: %u.\n" $total

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM