私はsftpを使って同じ名前の複数のファイルから単一のファイルを抽出したいと思います。
例えば。リモートサーバーに次のファイルがある場合
file_0722_005.dat
file_0722_020.dat
file_0722_033.dat
file_0722_0022.dat
そのうち何でも抜いてみたいです。
Unixでは行けます。
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
)。