Change filenames recursively

Gary Stainburn gary.stainburn at ringways.co.uk
Thu Feb 1 09:45:52 UTC 2007


On Wednesday 31 January 2007 21:48, Ray Van Dolson wrote:
> On Wed, Jan 31, 2007 at 03:57:30PM -0500, Matthew Anderson wrote:
> > I have hundreds of files that start with a * (asterisk) for the
> > filename.  I am needing to change the asterisk in every file to a _
> > (underscore).  Does
> >
> > Anyone know what command I can use to recursively do that?  I appreciate
> > any help anyone can provide me.
>
> The following should work:
>
>   for i in `find . -type f -name '\**'`; do mv $i `echo $i | sed -e
> 's/\*/_/g'`; done
>
> This will only work if there is one '*' in the filename as the sed command
> replaces all asterisks with underscores.  You can adjust if your needs
> differ.
>
> Ray

The best answer I've seen, but surely to remove the problem of multiple 
asterisks all you have to do is remove the 'g' modified from the end of the 
regex. This *should* work as the criteria of the find ensures the 1st * is at 
the beginning.

Gary
-- 
Gary Stainburn
 
This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000     




More information about the redhat-list mailing list