[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Using FIND to globally rename files...



On Fri, 2008-06-20 at 12:06 -0500, Robert Nichols wrote:
> Daniel B. Thurman wrote:
> > 
> > How do you use FIND to globally rename files?
> > 
> > I find that some music files that have '!' embedded in them
> > to cause conflicts especially when attempting to use
> > Nautilus to move them from one location into another,
> > so I wish to rename files that have offending characters
> > in them.
> > 
> > I tried:
> > 
> > 1) find . -type f -name \*.mp3 -exec mv "{}" `echo \"{}\" | sed -e 
> > 's/[!]//`" \;
> >    Nope.  Does not work.
> > 
> > 2) find . -type f -name \*.mp3 | xargs "echo "mv \"{}\" `echo \"{}\" | 
> > sed -e 's/\!//`""
> >    Ah, this is really convoluted, of course it does not work. It is rife 
> > with errors indeed!
> >    :)
> 
> Yes, the second has serious problems with nesting of quotes.  Simplest
> way is to use the 'rename' command:
> 
>     find . -type f -name '*!*.mp3' -exec rename '!'  ''  {} \;

Slightly better:

find . -type f -name '*!*.mp3' -print0 |xargs -0 rename '!'  ''

This will work even for filenames with spaces in them (quite common with
music files).

poc


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]