用于在没有 -R 的 FTP 服务器上列出递归目录的 Bash 脚本
Posted
技术标签:
【中文标题】用于在没有 -R 的 FTP 服务器上列出递归目录的 Bash 脚本【英文标题】:Bash script for recursive directory listing on FTP server without -R 【发布时间】:2015-05-07 00:16:25 【问题描述】:FTP 服务器上有多个带有子文件夹和图像文件的文件夹。 -R 被禁用。我需要将带有路径名的递归目录列表转储到文本文件中。到目前为止,我的逻辑是,遍历每个文件夹,检查文件夹名称是否包含“。”将其验证为文件或文件夹,如果它是文件夹,请进入并检查子文件夹或文件并列出它们。由于我不能使用 -R,我必须使用一个函数来执行遍历每个文件夹。
#!/bin/sh
ftp_host='1.1.1.1'
userName='uName'
ftp -in <<EOF
open $ftp_host
user $userName
recurList()
path=`pwd`
level=()
for entry in `ls`
do
`cwd`
close
bye
EOF
我被 for 循环的论点所困扰!
【问题讨论】:
【参考方案1】:很抱歉,您还没有收到任何回复。我认为原因可能是 Bash 不是解决这个问题的好方法,因为它需要与 FTP 客户端交互,即发送命令和读取响应。 Bash 不擅长这种事情。所以除了“不要使用 Bash”之外没有简单的答案。
我建议你看看另外两个工具。
首先,您可以使用http://curlftpfs.sourceforge.net/ 获取您想要的信息。如果使用 curlftpfs 挂载 FTP 服务器,则可以使用find
命令转储目录结构。这是最简单的选择...如果可行!
或者,您可以使用带有ftplib
模块的Python 编写程序:https://docs.python.org/2/library/ftplib.html。该模块允许您通过 API 调用与 FTP 服务器进行交互。
【讨论】:
非常感谢您抽出宝贵时间提供这方面的信息。我对 python 有一点基础,所以让我把重点放在那个替代方案上。但再次感谢!以上是关于用于在没有 -R 的 FTP 服务器上列出递归目录的 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章