bedtime question : xargs

vu pham vu at sivell.com
Thu Apr 23 06:45:37 PDT 2009


Roger Oberholtzer wrote:
> 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,

I appreciate your reply and I also want to know why using xargs /scp 
does not work.

Here is the output
[root at xen2vm1 ~]# find . -name \*.rpm | xargs echo scp {} root at xen2vm1:
scp {} root at xen2vm1: ./hello-1.0.0-2.src.rpm ./hello-1.0.0-2.i686.rpm 
./hello-1.0.0-1.src.rpm ./hello-1.0.0-1.i686.rpm

[root at xen2vm1 ~]# find . -name \*.rpm | xargs scp {} root at xen2vm1:
./hello-1.0.0-1.i686.rpm: Not a directory
[root at xen2vm1 ~]#


Vu



More information about the Linux-users mailing list