Ao executar ls
em sftp
, você não está executando o executável do sistema ls
, mas uma versão simplificada incluída como um comando interno do ambiente sftp
. A opção -d
não é suportada por esta versão, pois não é o% realls
com o qual você está familiarizado e suporta apenas um conjunto limitado de opções (consulte help
no ambiente sftp
):
ls [-1afhlnrSt] [path] Display remote directory listing
Então, sua única opção é analisar a saída:
echo ls -1 '*/*/Folder*' | sftp -i /path/to/key user@host |
sed -E 's|(.*/Folder*[^/]*/).*||' | grep -v '^sftp' | sort -u
O sed
removerá qualquer coisa depois que */*/Folder*/
, te grep -v
removerá a linha que mostra o prompt sftp
e o comando run ( sftp> ls -1 */*/Folder*/
) e sort -u
mostrarão apenas entradas exclusivas.