带有通配符的lftp mget错误标识文件

时间:2017-10-04 14:27:23

标签: wildcard lftp

我遇到了一个困扰我的问题。我正在使用LFTP作为夜间自动文件传输过程的一部分,目标是收集站点上的所有.csv文件。

通常,mget命令与通配符.csv一起能够找到并下载我期望的文件。但是,我遇到了一个有趣的情况,我有一个文件,用ls标识为:

-rw-------   0 User Name -         6461 Oct  4 14:04 file name.csv

但是当我运行mget * .csv时,我收到以下错误消息:

mget: Access failed: 550 /path/to/file/4 14:04 file name.csv: No such file or directory.

在尝试mget时,它似乎将文件元数据的%d %h:%m部分附加到文件名。我认为这可能是由于文件名中的空格,但在测试中它看起来并非如此。

摘要

  • 该文件存在,由ls
  • 检查
  • 该文件应由mget命令
  • 捕获
  • mget命令未捕获该文件,因为在搜索和获取命令之间的某处,其他字符会添加到文件名的前面,导致它尝试获取不存在的文件不存在

对我做错了什么的想法?

2 个答案:

答案 0 :(得分:0)

这个问题的答案最终是服务器和版本特定的,但我会分享最终成为问题的,以防它导致其他人在将来没有出现大量问题。

FTP服务器具有不同的用于转义用户名称的机制。在这种情况下,操作用户帐户具有两部分名字,具有空格分隔。

FTP服务器执行(或不执行)转义用户名的方式可能会导致lftp中mget的正则表达式解析器从列中抛出所有内容。将用户名减少到符合lftp预期的值(似乎是一个单词,可以包括-java.nio.file.WatchEvent.Modifier)最终解决了这个问题。

答案 1 :(得分:0)

为了对lftp使用通配符,您需要指定文件的完整路径。尝试从EBI FTP服务器下载时,以下操作将不起作用

lftp -c 'open ftp.ebi.ac.uk; set xfer:clobber on;  lcd /export/data/blastdb/temp/ ; mget nr*.tar.gz

在mget调用中添加路径可以进行通配符扩展,并且可以按预期运行。.

lftp -c 'open ftp.ebi.ac.uk; set xfer:clobber on;  lcd /export/data/blastdb/temp/ ; mget /pub/blast/db/nr*.tar.gz