텍스트 파일에 포함된 파일 목록을 삭제하려면 로컬 컴퓨터에서 이 명령을 실행합니다.
xargs rm -r < deletion_list.txt
예상대로 작동하며 현재 작업 디렉토리에 나열된 모든 파일을 삭제합니다 deletion_list.txt
.
그런 다음 이를 사용하여 sftp
원격 호스트에 연결하고 원격 호스트에서 삭제할 파일 목록을 로컬 컴퓨터에 생성합니다.
원격 호스트에 연결할 때 다음 명령을 하나씩 입력합니다.
로컬 작업 디렉터리를 변경합니다.
lcd /home/user/files_to_delete
지정된 패턴과 일치하는 동일한 디렉터리에 있는 파일의 로컬 작업 디렉터리에 텍스트 파일을 만듭니다.
!ls *.txt > deletion_list.txt
deletion_list.txt
이렇게 하면 로컬 작업 디렉터리의 파일 이름을 기반으로 원격 호스트의 파일이 삭제 되지만 "잘못된 명령" 오류가 발생합니다.
xargs rm -r < /home/user/files_to_delete/deletion_list.txt
왜 이것이 작동하지 않습니까?
답변1
sftp
man sftp
( 에 대한 설명서를 참조하세요.
설명하다
ftp
sftp는 암호화된(1) 전송을 통해ssh
모든 작업을 수행하는 (1) 과 유사한 파일 전송 프로그램입니다 .
잠시 후 이렇게 썼다.
대화형 명령대화형 모드로 들어간 후 (1)과 유사한 명령
sftp
세트를 이해하십시오 .ftp
유효한 명령 세트( bye cd chgrp chmod chown df exit get help lcd lls lmkdir ln lpwd ls lumask mkdir progres put pwd quit reget reput rename rm rmdir symlink version ! ?
)의 실행을 계속합니다. 명령 xargs
이 이 그룹에 없으므로 sftp
응용 프로그램 내에서 사용할 수 없습니다. (이것은 !
나머지 줄을 로컬 셸에 전달하는 로컬 셸 이스케이프입니다. 이러한 명령은 이스케이프되며 sftp
로컬 셸에서 처리되지 않습니다.)
유사한 도구를 사용하려면 해당 도구를 사용하여 원격 호스트에 셸 기반 세션을 제공하는 xargs
것이 좋습니다 . ssh
대신 sftp user@remotehost
에 사용합니다 ssh user@remotehost
(시스템 관리자가 대화형 세션을 허용한다고 가정). 이것이 작동하는지 확인한 후에는 호스트 전체에서 명령을 함께 문자열로 묶을 수 있습니다.
# On the local host
xargs rm -r < deletion_list.txt
# Also on the local host connnecting to the remote
ssh user@remotehost xargs rm -r < delete_list.txt
두 번째 명령의 목적은 원격 시스템에 연결하고 xargs rm -r
실행하여 데이터를 제공하는 것입니다.표준 입력라는 로컬 파일에서 delete_list.txt
.