As part of my work, I take tons of screen captures on our test Apple iPhone for documentation, but my boss wants me to use SEO friendly file names and it’s a huge hassle to rename them one by one. Is there some sort of script I can use on my Mac to fix things?
You can indeed solve this problem a wide variety of ways, including some slick Mac graphical utilities that you can find at VersionTracker.com, but let’s look at a simple script that solves this problem because I like writing shell scripts!
The basic idea is that we’re going to replace “IMG_” with a pattern that you specify. For example, perhaps you need “prod-v11” so that IMG_0001.PNG becomes “prod-v11-0001.PNG”. Better yet, let’s go ahead and fix the all uppercase filename suffix while we’re at it too, so it’ll end up as “prod-v11-0001.png”.
To do this, we’ll need to transform the old file name into a new one. This is easily done with the powerful “sed” command.
Here’s how I’d do it:
Well, what I’m doing here is actually transforming IMG_0001.PNG into “pattern01.png” because I know that for my uses I’ll never have more than 99 images in the same collection. If you might have more, you’ll want to use IMG_0 instead of IMG_00.
The transforms are to substitute IMG_00 for the basename pattern, then PNG substituted with png. See how that works?
Since I don’t want to type in each filename but have them all transform magically in a loop, that’s exactly how I’ll code it:
do
newname=”$(echo $name | sed “s/IMG_00/$basename/;s/PNG/png/”)”
echo “renaming $name as $newname”
mv $name $newname
done
One more piece is necessary for this to be a useful script: the ability to specify the pattern that should be used for the rename. This is done by grabbing the command argument to the script.
Here’s my full script:
if [ $# -ne 1 ] ; then
echo “Usage: $(basename $0) new-base-pattern”
exit 0
fi
basename=”$1″
for name in IMG*PNG
do
newname=”$(echo $name | sed “s/IMG_00/$basename/;s/PNG/png/”)”
echo “renaming $name as $newname”
mv $name $newname
done
exit 0
When run against a bunch of iPhone screen shots on my Mac, here’s what I see:
renaming IMG_0001.PNG as apple-iphone-download-app-01.png
renaming IMG_0002.PNG as apple-iphone-download-app-02.png
renaming IMG_0003.PNG as apple-iphone-download-app-03.png
renaming IMG_0004.PNG as apple-iphone-download-app-04.png
renaming IMG_0005.PNG as apple-iphone-download-app-05.png
renaming IMG_0006.PNG as apple-iphone-download-app-06.png
Quickly and easily done. Works for you, I hope?