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.