Using FIND to globally rename files...
Patrick O'Callaghan
pocallaghan at gmail.com
Fri Jun 20 17:36:11 UTC 2008
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
More information about the fedora-list
mailing list