この資料では、パスワードなしのSFTP接続を確立するときにリモートサーバーから複数のファイルを削除する方法について説明します。次のコードがあります。$file_list
変数を次の値に設定すると、変数の最初のファイルのみが削除されます。
$file_list="file1 file2"
sftp $USER@$HOST
rm $file_list
quit
SFTP-Session
プロンプトモードでコマンドを実行してみました。
sftp $USER@$HOST
rm file1 file2
ただし、まだfile1のみが削除されていることがわかります。
基本コマンドが欠落しているかどうかはわかりません。私は試しましたが//mdelete
拒否されました。mdel
mrm
無効なコマンドSFTPプロンプトウィンドウで。
ベストアンサー1
これはbashスクリプトに追加できる可能な解決策です。これはファイルごとに新しい接続を確立するため、理想的ではありません。
#!/bin/bash
# set variables
USER="username"
HOST="hostname"
file_list="file1 file1 file3 file4"
# delete each file
for file in $file_list; do
echo "rm $file" | sftp $USER@$HOST
done
exit 0
この一行がはるかに良いです!file1-9 は削除するファイル名です。必要に応じて変数を使用できます。同じです。
for file in file1 file2 file3 file4 file5 file6 file7 file8 file9; do echo -e "rm $file" >> sftp_batch; done; sftp -b sftp_batch username@hostname; rm sftp_batch