【问题标题】:Delete old files from ftp using shell script使用 shell 脚本从 ftp 中删除旧文件
【发布时间】:2015-02-03 21:29:54
【问题描述】:

我想要一个从 FTP 服务器中删除旧文件的脚本,但没有任何效果。 我测试了我找到的以下脚本,但是当我运行时,我收到错误:“表达式中的语法错误(错误标记为“0+5”)”。

有人可以帮助我吗?

#!/bin/bash
# get a list of files and dates from ftp and remove files older than ndays
ftpsite="HOSTNAME" 
ftpuser="USERNAME" 
ftppass="PASSWORD" 
putdir="FOLDER" 

#age of files they should delete
ndays=1

# work out our cutoff date
MM=`date --date="$ndays days ago" +%b`
DD=`date --date="$ndays days ago" +%d`

echo removing files older than $MM $DD

# get directory listing from remote source
listing=`ftp -i -n $ftpsite <<EOMYF 
user $ftpuser $ftppass
binary
cd $putdir
ls
quit
EOMYF
`
lista=( $listing )

# loop over our files
for ((FNO=0; FNO<${#lista[@]}; FNO+=9));do
  # month (element 5), day (element 6) and filename (element 8)
  #echo Date ${lista[`expr $FNO+5`]} ${lista[`expr $FNO+6`]}          File: ${lista[`expr $FNO+8`]}

  # check the date stamp
  if [ ${lista[`expr $FNO+5`]}=$MM ];
  then
    if [[ ${lista[`expr $FNO+6`]} -lt $DD ]];
    then
      # Remove this file
      echo "Removing ${lista[`expr $FNO+8`]}" 
      ftp -i -n $ftpsite <<EOMYF2 
      user $ftpuser $ftppass
      binary
      cd $putdir
      delete ${lista[`expr $FNO+8`]}
      quit
EOMYF2

    fi
  fi
done

【问题讨论】:

    标签: shell ftp


    【解决方案1】:

    expr $FNO+5 替换为expr $FNO + 5,将expr $FNO+6 替换为expr $FNO + 6

    您可以使用较新的bash|ksh|zsh 功能,例如

     if [[ ${lista[$((FNO+5))]} == "$MM" ]]; then
    

    非常轻微的测试。请注意,计算结果为 "3" == "03" 的内容将是错误的。

    $(( math cmd sub cmds )) 构造可以使用大多数 C 语言数学运算符,例如 ++(以及许多其他我不常使用的运算符,因此请通过 man bash|ksh|zsh 获取详细信息。)。

    请注意,您不需要使用$FNO,但普通的FNO 将被评估为$FNO

    当然,您还需要修复 $FNO+6$FNO+8

    IHTH。

    【讨论】:

    • 我使用了“如果 [[ ${lista[$((FNO+5))]} == "$MM" ]];"和工作!非常感谢:D
    • 很高兴有帮助!如果您发现我的答案对您有用,您可以通过单击箭头“接受”它,我的答案左上角的数字环绕着上下箭头。其他管理 ftp 删除的好代码。祝你好运。
    • @JhonatanSilva 我试过这个脚本。它运行没有任何错误,但没有删除文件。你能把它的副本邮寄到106597@gmail.com吗?
    • 使用set -x 查看运行脚本时扩展的变量值。您的假设可能与 Jhonatan 的假设不同。祝你好运。
    猜你喜欢
    • 2012-06-27
    • 2017-01-25
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多