2
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 失败,那么原始文件和新文件仍然存在这个小时添加),有时会更多。

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

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

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

提前感谢他

4

1 回答 1

2

试试下面

#!/bin/bash
PUT_FILES=$(find . -name "*" -printf "put %p\n")

ftp -inv $HOST >> $TMPLOGFILE 2>&1 << ENDFTP
user $USER $PASS
binary
cd gpeh
lcd gpeh
$PUT_FILES
bye
ENDFTP

解释

  • find . -name "*" -printf "put %p\n"在当前目录中的.任何名称文件"*"中,打印输出格式为"put %p\n"
  • PUT_FILES=$(...)将输出捕获到变量。
  • $PUT_FILES将通过 ftp 扩展和执行。
于 2012-12-07T05:42:12.997 回答