如何在 shell 脚本中检查所有需要的文件是否已下载

如何在 shell 脚本中检查所有需要的文件是否已下载

我已经通过 sftp 从远程服务器下载了文件。现在我想检查我的所有文件(给定的 nodeid)是否已下载。如果未下载,则通过 sendmail 给出警告消息。

文件格式:

"$today_date"_MPS_Cust_dump_"$nodeid".list.Z

today_date=date +%Y%m%d
declare -a nodeid=("302" "303" "304" "305" "311" "312" "313" "314" "315" "316" "317" "318" 
  "410" "411" "412" "415" "416" "418" "431" "432" "433" "434" "435" "436" "407" "408" "409" 
  "401" "402" "420" "421" "422" "425" "426" "427" "403" "404" "405" "406"
)

答案1

用这个:

today_date="$(date +%Y%m%d)" # use $(...) to assign the output of a command to a variable
declare -a nodeid=(...)

for id in "${nodeid[@]}"; do
  [ -e "${today_date}_MPS_Cust_dump_${id}.list.Z" ] || echo "$id is not downloaded"
done | mail -E -s "Subject" [email protected]

  • for 循环遍历数组中的每个项目nodeid
    • [ -e "..." ]检查当前目录中是否存在给定名称的文件
    • || echo "..."如果文件不存在则打印一条消息
  • | mail ...一切都通过管道传输到mail-s定义主题,-E当正文为空(所有文件都存在)并且最后一个参数是地址时,不会发送邮件。

答案2

我建议您将这些文件下载到临时文件夹,然后在下载完成后将它们移动到所需的文件夹。
这样您就知道所需文件夹中的所有文件都已完全下载。

相关内容