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