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.