首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ftp 'put file*.txt‘的行为-只上传第一个匹配的文件

ftp 'put file*.txt‘的行为-只上传第一个匹配的文件
EN

Stack Overflow用户
提问于 2016-12-29 08:49:01
回答 3查看 532关注 0票数 1

假设工作目录中有两个文件:

代码语言:javascript
复制
test201612290900.txt
test201612290901.txt

当我跑的时候

代码语言:javascript
复制
ftp -n $HOST <<SCRIPT
user $USER $PASSWORD
put test*.txt test.txt
bye
SCRIPT

使用ftp可执行文件(linux),只有一个文件被放到ftp站点。

编辑:我使用这个*,因为我现在没有预先准确的文件名。

我发现复制到ftp站点的总是第一个匹配(test201612290900.txt)。

我的问题:这是记录在案的行为吗?我能控制这种行为吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-29 08:58:50

put命令只上传一个文件。

put命令中的模式实际上是在执行ftp之前就由shell解析的(类似于环境变量(如$HOST) )。

这可能会回答你的问题:

match files in alphanumeric order?

不过请注意,语法put a b c是错误的。更令人惊讶的是,它没有出错。所以你不能指望它会被记录下来。

你最好这样做:

代码语言:javascript
复制
FILES=(test*.txt)
FILE=${FILES[0]}

ftp -n $HOST <<SCRIPT
user $USER $PASSWORD
put $FILE test.txt
bye
SCRIPT

学分:How can I get the first match from wildcard expansion?

票数 1
EN

Stack Overflow用户

发布于 2016-12-29 09:00:08

您使用的是不引用的此处文档。这意味着您的shell将在ftp运行之前展开通配符并在shell文档中插入变量。

所以在实践中,你要

代码语言:javascript
复制
put test201612290900.txt test201612290901.txt test.txt

引用这里的文档可以解决这个问题,但是当然,这不会使您的程序工作,因为FTP put命令不支持通配符。正如Ipor Sircer的答案所示,mput命令是这样做的;但是,您也需要正确引用这里的文档。

票数 1
EN

Stack Overflow用户

发布于 2016-12-29 08:54:59

观看手册的ftp是免费今天!

代码语言:javascript
复制
 mput local-files
             Expand wild cards in the list of local files given as argu‐
             ments and do a put for each file in the resulting list.  See
             glob for details of filename expansion.  Resulting file names
             will then be processed according to ntrans and nmap settings.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41376091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档