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?

Foi útil?

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/
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top