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