I'm trying to use PuTTY to connect via SSH to a Mac and download some files specified using a find command.
Você está tentando baixar os arquivos para o sistema Windows local?
Lembre-se de que o PuTTY é um cliente SSH. Tudo o que faz é enviar texto digitado para o seu Mac e exibir a saída recebida. Portanto, quando você executa scp
desta forma, ele é executado no Mac e os nomes dos arquivos devem ser especificados conforme vistos pelo Mac.
Se você deseja transferir arquivos do Mac para o Windows, é scp macpath user@windowshost:windowspath
. (Você parece ter isso invertido em seu comando de exemplo.)
Isso também significa que seu computador Windows precisa de um servidor SSH instalado com recursos SCP e que deve permitir conexões SSH de entrada.
I'm not sure how to specify a local Windows path.
Depende do servidor SSH que você instalou no Windows. (Veja o parágrafo acima.) Mas geralmente, x:\dir\file
pode ser convertido em /x/dir/file
. Leia o manual.
The files have spaces in them that may be causing issues
Sim, isso causa um problema com xargs
. Você foi na direção certa com xargs -0
, mas precisa fazer o mesmo com find
- find .... -print0
ou find .... -printf "%pfind
"
.
Se a versão de -print0
no Mac OS X não suportar -printf
nem find
, você poderá usar novas linhas como separadores. Nesse caso, não adicione nenhuma opção especial a xargs -0
, mas altere xargs -d '\n'
para xargs
.
Uma alternativa melhor para find -exec
é xargs
.
xargs -0 scp user@host:{} localpath
Há mais um erro aqui. Por padrão, {}
não não substitui -I "{}"
pelo nome do arquivo; você tem que dizer especificamente para isso, usando -exec
.
Você pode ter confundido isso com a opção find
em scp
, o que faz funcionar assim:
find . -iname "*searchtext*" -exec scp user@host:{} localpath \;
Acima, deixei a ordem do argumento %code% exatamente como no exemplo original. Mas como eu disse antes, está incorreto.