SFTPを使用して複数のファイルを削除する方法

SFTPを使用して複数のファイルを削除する方法

この資料では、パスワードなしのSFTP接続を確立するときにリモートサーバーから複数のファイルを削除する方法について説明します。次のコードがあります。$file_list変数を次の値に設定すると、変数の最初のファイルのみが削除されます。

$file_list="file1 file2"

sftp $USER@$HOST
rm $file_list
quit
SFTP-Session

プロンプトモードでコマンドを実行してみました。

sftp $USER@$HOST
rm file1 file2

ただし、まだfile1のみが削除されていることがわかります。

基本コマンドが欠落しているかどうかはわかりません。私は試しましたが//mdelete拒否されました。mdelmrm無効なコマンド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

おすすめ記事