On 2009-01-08 11:03 +0100, Micha Feigin wrote:

> I'm trying to fix the file suffix on some file in my directories using sed and
> find but for some reason sed doesn't match the string in this manner, that is
> running
> find . -name "*.JPG.jpg" -execdir echo `echo '{}' | sed -e 
> 's/\(.*\).JPG.jpg/\1.jpg/' -` \;
> on a directory with
> 2005_10_09-03_05_11.JPG.jpg
> prints
> 2005_10_09-03_05_11.JPG.jpg
> instead of
> 2005_10_09-03_05_11.jpg
>
> any idea what I'm doing wrong?

The shell does the process substitution before find even sees it:
`echo '{}' | sed -e 's/\(.*\).JPG.jpg/\1.jpg/' -` is substituted by its
output, which is "{}", so you are effectively running

find . -name "*.JPG.jpg" -execdir echo {} \;

which is not what you intended.

> find . -type f -exec echo `echo '{}' | tr "[:upper:]" "[:lower:]"` \;
>
> also fails to convert the file to lower case for some reason (same problem,
> doesn't change the case, as if it doesn't see the characters).

It does indeed not see them, it only sees {}.

Sven


-- 
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org 
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to