首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一个Bash脚本,它只在FTP以前没有下载过文件的情况下才从FTP下载文件

一个Bash脚本,它只在FTP以前没有下载过文件的情况下才从FTP下载文件
EN

Stack Overflow用户
提问于 2017-04-18 21:34:51
回答 1查看 896关注 0票数 0

我目前有一个从FTP站点下载文件的bash脚本。我想修改脚本,以保留它下载的每个文件的清单,并且只下载清单中不存在的任何新文件。有没有办法在bash中做到这一点,或者我是否突破了bash实际所能做的限制?

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 01:12:20

我的建议是去获取您可能想要下载的文件列表,将其与您的清单进行比较,然后下载清单中未包含的文件。像这样的东西应该是有效的:

代码语言:javascript
运行
复制
ftp username@hostname <<EOF
ls * filelist.txt
EOF
cat filelist.txt | awk '{print $9}' | tail -n +3 > filenames.txt
while IFS= read -r file
  do
    if [[ ! $(grep "$file" manifest.txt) ]]; then
       echo "$file is not in manifest"
    fi
  done < "filenames.txt"

当然,您需要更改filelist.txtfilenames.txt以包含适当的路径。另外,更改echo命令,将文件名添加到另一个文件或变量中,您将使用该文件或变量进行实际下载。

以下是对所发生的事情的解释:

前三行使用ftp获取文件列表(您需要更改*以指向正确的目录)。

ftp行解析ls命令的输出,仅获取文件名部分并将其放入另一个文件中。

然后,while循环遍历文件列表,并使用grep查看文件名是否存在于清单文件中。如果没有,您可以下载它并将其添加到清单中。

如果你有任何问题,请告诉我。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43473762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档