linux - 如何将结果 "!find ..."命令重定向到放置 lftp 命令

标签 linux shell ftp lftp

我想从 lftp 的 !find 命令的结果中放入文件。

我试过:

$> lftp -u foo, sftp://bar
lftp foo@bar$> put < !find ./local -type f

但是失败了!!

这有效:

$> lftp -u foo, sftp://bar
lftp foo@bar$> !find ./local -type f | awk '{print "put "$1}' > /tmp/files.lftp
lftp foo@bar$> source /tmp/files.lftp

还有别的办法吗!?我想使用 stdio 重定向(管道、stdin...)。

最佳答案

我已经通读了整个man lftp(1)而且看起来您选择的方式实际上是最好的方式

  1. !命令不支持与其他命令的直接组合,如您所试put < !find ...
  2. 上传文件的唯一方法是使用 put , mputmirror . mirror正如您所说,对您没有用,因为它保留了路径。
  3. putmput命令不支持以任何方式指定包含要上传的文件列表的文件。

因此,唯一的可能性就是您所拥有的:生成脚本并使用 source运行它。

您可以尝试将所有文​​件放入一个 mput 中命令:

!find ./local -type f | awk -v ORS=" " 'BEGIN{print "mput "}{print}' > /tmp/files.lftp

但要小心:虽然我没有在文档中找到它,但最大行大小可能有限制!所以我认为最终你的方式是最好的方式。

请注意,您还可以将命令编码为:

!find ./local -type f -printf "put %p\n" > /tmp/files.lftp

关于linux - 如何将结果 "!find ..."命令重定向到放置 lftp 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836427/

相关文章:

mysql - 使用 Mulesoft 将 CSV 文件从 FTP 插入到 MySQL

python - 带有 FTPS 的 ftplib storbinary 挂起/从未完成

linux - "exec env -"安装bazel时路径错误

linux - 在 linux 中备份完成后编写删除备份文件的脚本

ftp - 如何使用Kotlin在android studio中使用FTP上传小文件或图片

linux - MacOS命令行跳转到行首

shell - 为什么 “(”在bash脚本中是意外的?

linux - 使用 docker 和 --privileged 构建

linux - 当我给它 `-- ` 作为参数时会出现奇怪的行为

linux - 在 bash 中运行时,如何在特定点向脚本发送击键?