bedtime question : xargs

Roger Oberholtzer roger at opq.se
Thu Apr 23 06:38:11 PDT 2009


On Thu, 2009-04-23 at 07:38 -0500, vu pham wrote:
> Roger Oberholtzer wrote:
> > On Wed, 2009-04-22 at 22:59 -0500, Vu Pham wrote:
> >> Using xargs, how can I pipe the output ( of some command ) as the 
> >> *first* parameter of some other command ?
> >>
> >> Here is my problem: I have various rpm files in a directory tree. I want 
> >> to copy all of these files to a remote server using scp. What I am 
> >> thinking is
> >>
> >> [oliver at xen2vm4 redhat]$ find . -name "*.rpm" 
> >>
> >> ./SRPMS/hello-1.0.0-2.src.rpm
> >> ./SRPMS/hello-1.0.0-1.src.rpm
> >> ./RPMS/i686/hello-1.0.0-2.i686.rpm
> >> ./RPMS/i686/hello-1.0.0-1.i686.rpm
> >>
> >>
> >> # find . -name "*.rpm" | xargs  scp  ???   root at remoteserver:
> > 
> > perhaps
> > 
> > 	find . -name \*.rpm | xargs scp {} root at remoteserver:
> > 
> >
> Thanks, Roger, but I got the below error:
> 
> [oliver at xen2vm4 ~]$ find . -name \*.rpm | xargs scp {} root at xen2vm1:
> ./redhat/RPMS/i686/hello-1.0.0-1.i686.rpm: Not a directory

I know you solved it, but I am curious what the error was. A chance to
learn something.

What do you get with:

	find . -name \*.rpm | xargs echo scp {} root at xen2vm1:

Does the command look correct? Do you (GF) have any spaces in the names?
It didn't look like such a tree. xargs also takes an argument to tell
how big a buffer to use. But of course, your shell could cause problems
if the buffer is too big.

Having said all this, I, like David in this thread, use -exec. I seldom
use xargs. But I wanted to answer your question.


-- 
Roger Oberholtzer

OPQ Systems / Ramböll RST

Ramböll Sverige AB
Krukmakargatan 21
P.O. Box 17009
SE-104 62 Stockholm, Sweden

Office: Int +46 8-615 60 20
Mobile: Int +46 70-815 1696




More information about the Linux-users mailing list