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

답변2

나는 보통 이것을 한다 lftp.

설정 - rmeote 서버 Skinner에서
$ mkdir adir
$ touch afile1 afile2
$ ls
afile1  afile2
이제 삭제하겠습니다.
$ file_list="afile1 afile2"
$ lftp sftp://sam@skinner -e "cd ~/adir; mrm $file_list"
cd ok, cwd=/home/sam/adir    
rm ok, 2 files removed                 
lftp sam@skinner:~/adir> ls
drwxr-xr-x    2 sam      users        4096 Nov  4 11:52 .
drwxr-x---  131 sam      users       20480 Nov  4 11:51 ..
lftp sam@skinner:~/adir> bye

단일 명령으로 만드십시오.

$ lftp sftp://sam@skinner -e "cd ~/adir; mrm $file_list; bye"

답변3

sftp를 할 수 있다면 ssh를 실행할 수 없나요? 그렇다면 명령은 다음과 같습니다.

 ssh user@hostname rm file1 file2 

잘 작동할 겁니다. 공개/개인 SSH 키를 사용하는 경우 비밀번호 프롬프트가 표시되지 않습니다.

답변4

파일 이름인 경우. glob 패턴을 사용하여 제거할 수 있습니다.

rm file*

관련 정보