gpt4 book ai didi

linux - Bash 脚本,仅在以前未下载文件时才从 FTP 下载文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:22 25 4
gpt4 key购买 nike

我目前有一个从 FTP 站点下载文件的 bash 脚本。我想修改脚本以保留它下载的每个文件的 list ,并且只下载不在 list 中的任何新文件。有没有一种方法可以在 bash 中执行此操作,或者我是否在突破 bash 实际功能的限制?

最佳答案

我的建议是获取您可能想要下载的文件列表,将其与您的 list 进行比较,然后下载 list 中没有的文件。这样的事情应该有效:

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 获取文件列表(您需要更改 * 以指向正确的目录。)

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

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

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

希望这对您有所帮助!

关于linux - Bash 脚本,仅在以前未下载文件时才从 FTP 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43473762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com