Saída do SCP Locate por Xargs
Pergunta
Quero fazer uma lista de arquivos da saída da Locate. Eu quero scp
Para pegar a lista.
Não tenho certeza sobre a sintaxe. Minha tentativa com pseudo-código
locate labra | xargs scp {} masi@11.11.11:~/Desktop/
Como você pode mover os arquivos para o destino?
Solução
Normalmente, {} é um acharISM:
find ... -exec cmd {} \;
Onde {} é o arquivo atual que o encontro está funcionando.
Você pode ter Xargs para se comportar semelhante com:
locate labra | xargs -I{} echo {} more arguments
No entanto, você notará rapidamente que ele executa os comandos várias vezes em vez de uma chamada para SCP.
Então, no contexto do seu exemplo:
locate labra | xargs -I{} scp '{}' masi@11.11.11:~/Desktop/
Observe as citações únicas em torno do {}, pois será útil para caminhos com espaços neles.
Outras dicas
Os Xargs normalmente levam tantos argumentos que ele pode caber na linha de comando, mas usando -I de repente leva apenas um. GNU paralelo http://www.gnu.org/software/parallel/ pode ser uma solução melhor:
locate labra | parallel -m scp {} masi@11.11.11:~/Desktop/
Como você está olhando para o SCP, sugiro que você também confira o RSYNC?
locate labra | parallel -m rsync -az {} masi@11.11.11:~/Desktop/