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 になるはずですが、前の 1 時間に ftp が失敗した場合のみそうではありません。そのため、元のファイルは新しいファイルと共に残っています)。この時間が追加されます)、場合によってはそれ以上になることもあります。

「find」コマンドを使用して、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_FILESftp経由で展開・実行されます。
于 2012-12-07T05:42:12.997 に答える