デフォルトでは、タイムスタンプであるSFTP接続中にファイル名を文字列と一致させようとします。
ファイル名の一部を一致させるには? SFTP接続で変数を宣言できないようです。また、Bashで以前に作成された変数を呼び出すこともできません。
編集:私が試したこと
yr=$(date + "%Y")
sftp -i key.pem un@server
sftp> echo $yr
Invalid command.
sftp> $yr
Invalid command.
新しいケース
sftp -i key.pem un@server
sftp> test=$(date +"%Y")
Invalid command.
その2つを試しました。
ベストアンサー1
プログラムはsftp
それ自体は完全に独立しておりbash
、変数の値を知って拡張されます$yr
。通常、アプリケーション固有の通信方法がなければ、bash変数を外部プログラムに渡すことはできません。
$yr
ファイル名に含まれるファイルのみをアップロードまたはダウンロードするには、scp
次の方法を使用できます。
yr=$(date +%Y)
scp -i key.pem un@server:/some/long/path/that/includes/$yr .
ダウンロードのためまたは
scp -i key.pem some_local_file un@server:/some/long/$yr/path
アップロード用。
何らかの理由sftp
で排他的に使用する必要がある場合は、すぐにバッチファイルを作成できます。
sftp -i key.pem -b - un@server <<< "get /some/path/with/$yr"