Hi,Eric

 Many thanks for your quite detailed explanation.
It's not bug but my limit knowledge.
 It works and I have learned the  details from you.

Thanks!


Best Regards
 Xiaowu Dai

STmicroelectronics  
(+)86 –(0)755-8601-2139
Tina: 097-2139
      

 


-----Original Message-----
From: Eric Blake [mailto:ebl...@redhat.com] 
Sent: Friday, November 01, 2013 10:26 PM
To: Xiao Wu DAI; bug-findutils@gnu.org
Subject: Re: xargs bugs

On 11/01/2013 01:54 AM, Xiao Wu DAI wrote:
> 
> hi,
> 
> it seems `echo ..` doesn't work in GNU xargs version 4.2.27 like below
> | xargs -t -i mv {}`echo {} |sed 's/mode/dai/g'`

'echo' is your friend.  Try:

echo xargs -t -i mv {} `echo {} | sed 's/mode/dai/g'`

to see that you were executing:

xargs -t -i mv {} {}

which is NOT what you wanted.  You need to use proper quoting; and since you 
want to do programmatic shell actions on {}, you need your xargs to spawn an 
instance of sh.  Try:

xargs -t -i sh -c 'mv "$1" "$(echo "$1" | sed 's/mode/dai/g')"' sh {}

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Reply via email to