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.