![如何使用 Windows 7 FTP 客户端将 FTP 递归列表的输出重定向到本地文件?](https://linux22.com/image/1417483/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Windows%207%20FTP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B0%86%20FTP%20%E9%80%92%E5%BD%92%E5%88%97%E8%A1%A8%E7%9A%84%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%EF%BC%9F.png)
在 Windows 7 中使用 DOS 命令 FTP 时,我可以使用此 FTP 命令递归列出远程目录的所有文件:
ftp> ls -R
我无法将 ls -R 的输出发送到本地文件,FTP 一直在抱怨语法:
ftp> ls -R . save.txt
usage: ls remote-directory local-file
有人可以解释为什么以及如何得到我想要的结果吗?
答案1
据我所知,一旦进入交互式 ftp shell,就无法捕获输出。
但是您可以将命令传递给 ftp 命令,或者使用命令指定文件(如果您需要多个命令,则需要这样做,例如指定用户名/密码)
然后将 std 重定向到文件。
像这样:
echo ls -R | ftp yourHostname > save.txt
或者将所有命令(比如说 mycommands.txt)放在一个文本文件中,然后使用以下命令调用它
ftp -s:mycommands.txt > save.txt
mycommmands.txt 可能看起来像这样
user yourName yourPassword
open yourHostname
cd someDirectory
ls -R
(我现在无法测试第二个例子,如果它不起作用请告诉我)
答案2
假设您通过命令行使用简单的 ftp,使用带有 -Rl 选项的 dir 命令以递归方式搜索并将其复制到文件,然后使用 grep、find 或您的操作系统支持的任何方式搜索该文件。
ftp> dir -Rl education.txt
output to local-file: education.txt? y
227 Entering Passive Mode (9,62,119,15,138,239)
150 Opening ASCII mode data connection for file list
226 Transfer complete
答案3
ftp> dir * Sample.txt
这对我有用。