File 如何使用命令行从linux服务器递归地仅ftp某些文件类型?

File 如何使用命令行从linux服务器递归地仅ftp某些文件类型?,file,recursion,ftp,types,File,Recursion,Ftp,Types,我只想从我的服务器下载.htm或.html文件。我正在尝试使用ncftpget甚至wget,但效果有限 使用ncftpget,我可以下载整个树结构,没有问题,但似乎无法指定我想要的文件,要么全部,要么什么都没有 如果我像这样指定文件类型,它将只显示在顶部文件夹中: ncftpget -R -u myuser -p mypass ftp://ftp.myserver.com/public_html/*.htm ./local_folder 如果我这样做,它将下载整个网站,而不仅仅是.htm文件:

我只想从我的服务器下载.htm或.html文件。我正在尝试使用ncftpget甚至wget,但效果有限

使用ncftpget,我可以下载整个树结构,没有问题,但似乎无法指定我想要的文件,要么全部,要么什么都没有

如果我像这样指定文件类型,它将只显示在顶部文件夹中:

ncftpget -R -u myuser -p mypass ftp://ftp.myserver.com/public_html/*.htm ./local_folder
如果我这样做,它将下载整个网站,而不仅仅是.htm文件:

ncftpget -R -u myuser -p mypass ftp://ftp.myserver.com/public_html/ ./local_folder *.htm

我可以使用ncftp来执行此操作吗,或者我应该使用其他工具吗?

ncftpget是否理解dir globs

试一试


**表示任意数量的目录。

您可以使用wget执行此操作

wget -r -np -A "*.htm*" ftp://site/dir
或:

然而,根据:

请注意,这两个选项不影响HTML文件的下载(由
.htm
.HTML
文件名前缀确定)。这种行为可能不是所有用户都想要的,并且可能会在Wget的未来版本中更改


wget
命令可以理解unix文件全局绑定语法

wget -r -np --ftp-user=username --ftp-password=password "ftp://example.com/path/to/dir/*.htm"
相反,您可以使用
-A
选项,该选项接受以逗号分隔的文件名后缀或模式列表

wget -A '*.htm'
-R
选项与
-A
相反,因此可以使用它指定不提取的模式

注意:一定要引用模式!否则,shell可能会扩展glob本身,从而导致意外的结果


还有!查看关于服务器故障的问题。

您应该转义
*.htm*
,以将其传递给wget,例如
'*.htm*'
wget -r -np --ftp-user=username --ftp-password=password "ftp://example.com/path/to/dir/*.htm"
wget -A '*.htm'