SFTP를 사용하여 비슷한 이름의 여러 파일에서 단일 파일을 추출하는 방법

SFTP를 사용하여 비슷한 이름의 여러 파일에서 단일 파일을 추출하는 방법

sftp를 사용하여 비슷한 이름의 여러 파일에서 단일 파일을 추출하고 싶습니다.

예를 들어. 내 원격 서버에 다음 파일이 있는 경우

file_0722_005.dat
file_0722_020.dat
file_0722_033.dat
file_0722_0022.dat

그 중 아무거나 뽑아보고 싶습니다.

유닉스에서는 갈 수 있어요

ls file_0722_*|head -1

하지만 SFTP에서는 머리/꼬리가 작동하지 않습니다.

이 작업을 수행하는 방법을 제안하십시오!

답변1

SSHFS로컬 컴퓨터에 원격 파일 시스템을 마운트할 수 있습니다. SFTP를 통신 프로토콜로 사용하므로 서버에서 SFTP를 허용하는 경우 SSHFS를 사용할 수 있습니다. 클라이언트 시스템이 다음을 지원해야 합니다.퓨즈이는 Linux, OSX, *BSD 및 Solaris를 포함한 대부분의 최신 Unix 변형에 해당됩니다.

mkdir myserver
sshfs [email protected]:/path/to/directory myserver
cd myserver
set file_0722_*
cp "$1" /local/directory
fusermount -u myserver

답변2

다른 클라이언트를 만날 수도 있습니다.

lftp예를 들어 lftp sftp://user@host/dir:

glob eval -f 'get "$0"' file_0722_*

그러나 파일 이름에 백슬래시, 큰따옴표 또는 줄 바꿈이 포함될 수 있는 경우에는 사용할 수 없습니다. 파일 이름을 제어할 수 없으면 명령 주입 취약점이 됩니다(예: 이름이 지정된 파일을 사용하면 file_0722_";!reboot"해당 명령을 실행할 수 있습니다 reboot).

관련 정보