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

时间:2012-12-06 21:08:57

标签: bash ftp find put

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内(或许我可以)这样做,所以我真的不知道该怎么做。

提前感谢他

1 个答案:

答案 0 :(得分: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扩展和执行。