我想将文件FTP(放入)到我在Bash中使用"find"命令找到的目录中


ftp -inv $HOST >> $TMPLOGFILE 2>&1 << ENDFTP
user $USER $PASS
binary
cd gpeh
lcd gpeh
put nameoffile *this is where I want the results of the "find" to go*
bye
ENDFTP

上面是我用来ftp的代码,下面是一个示例查找脚本。

find ./gpeh

所以基本上我想做的是,获取主机"gpeh"文件夹中的所有文件,然后将它们放在远程机器"gpeh"文件夹中。 有时文件的数量将是 1(好吧,在大多数情况下应该是 1,唯一不会是前一小时的 ftp 失败,所以原始文件与这个小时添加的新文件一起仍然存在),有时它会更多。

如果我只是想说使用"find"命令删除我在 gpeh 文件夹中找到的文件,我可以使用

find ./gpeh | xargs delete "and whatever conditions here"

但是我不能在FTP中做到这一点(或者我可以),所以我真的不确定该怎么做。

提前感谢他

试试下面

#!/bin/bash
PUT_FILES=$(find . -name "*" -printf "put %pn")
ftp -inv $HOST >> $TMPLOGFILE 2>&1 << ENDFTP
user $USER $PASS
binary
cd gpeh
lcd gpeh
$PUT_FILES
bye
ENDFTP

解释

  • find . -name "*" -printf "put %pn" 在当前目录.任何名称文件中"*",打印输出格式为"put %pn"
  • PUT_FILES=$(...) 将输出捕获到变量。
  • $PUT_FILES 将通过 ftp 进行扩展和执行。

最新更新