2009-11-12 3 views
0

locate의 출력 파일 목록을 만들고 싶습니다. scp으로 받아 보겠습니다.Xargs에서 Scp locate의 출력

구문에 대해 잘 모르겠습니다. 어떻게 목적지에 파일을 이동할 수 있습니다 의사 코드

locate labra | xargs scp {} [email protected]:~/Desktop/ 

나의 시도? {}가 작업 찾을 현재 파일이

find ... -exec cmd {} \; 

:

답변

1

일반적으로, {}는 주의를 찾을 수 있습니다.

당신은 xargs를이와 비슷한 행동을 얻을 수 있습니다 :

locate labra | xargs -I{} echo {} more arguments 

그러나, 당신이 SCP 대신 하나의 호출의 명령을 여러 번 실행되도록 신속을 알 수 있습니다.

그래서 귀하의 예제의 맥락에서 :

locate labra | xargs -I{} scp '{}' [email protected]:~/Desktop/ 

주의 주위에 작은 따옴표은 ​​{} 그들에 공백이있는 경로에 유용 할 것 같은.

+0

downvote은'모든 입력 파일을 한 번 scp'하지만 해결책은 없다. 질문은'scp '를 사용하는 것에 관해 명시 적으로 나는 기대할 것입니다. 또한''{} ''와 같은 작은 따옴표를 사용하는 것이 좋습니다 - 따옴표는 쉘에 의해 먹혀 들며 전혀 차이가 없습니다. –

3

xargs는 일반적으로 명령 줄에 사용할 수있는 인수를 많이 사용하지만 -I를 사용하면 갑자기 하나만 필요합니다.

당신이 scp를보고 있기 때문에
locate labra | parallel -m scp {} [email protected]:~/Desktop/ 

, 당신이 또한 rsync를 확인 제안 할 수 있습니다 : 병렬 GNU http://www.gnu.org/software/parallel/ 더 나은 해결책이 될 수 있습니다? 당신은`xargs`가 호출하는 문제를 언급하기 때문에

locate labra | parallel -m rsync -az {} [email protected]:~/Desktop/