## 10.11. One More Way to Do It

I couldn't resist throwing my hat into this ring. I can imagine an unsophisticated user who might not trust himself to replace one pattern with another, but doesn't want to repeat a long list of mv -i commands. (The -i option will prompt if a new name would overwrite an existing file.) Here's a simple script (Section 1.8) that takes a list of filenames (perhaps provided by wildcards) as input and prompts the user for a new name for each file:

>     #!/bin/sh
>     # Usage: newname files
>     for x
>     do
>         echo -n "old name is $x, new name is: "
>         read newname
>         mv -i "$x" "$newname"
>     done

For example:

>     % touch junk1 junk2 junk3
>     % newname junk*
>     old name is junk1, new name is: test1
>     mv: overwrite test1 with junk1? y
>     old name is junk2, new name is: test2
>     old name is junk3, new name is: test3

In the first case, test1 already existed, so mv -i prompted.

This script is very simple; I just thought I'd use it to demonstrate that there's more than one way to do it, even if you aren't using Perl.

-- TOR

Copyright © 2003 O'Reilly & Associates. All rights reserved.