[Bash] Rename files sequentially and padding
Maybe I’ve just reinvented the hot water. But I needed it and it took me less time to write it on my own than searching for the solution.
The task was to take all files in a directory and copy them into an output directory renaming them sequentially starting from a provided number. So files will be something like 0000.jpg, 0001.jpg, …, 0035.jpg, etc.
Less words as usual
#!/bin/bash
# copy all files in the directory to an output one renaming them
# sequentially.
#
# GNU LESSER GENERAL PUBLIC LICENSE
# Version 2.1, February 1999
#
# Copyright (C) 1991, 1999 Free Software Foundation, Inc.
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# Everyone is permitted to copy and distribute verbatim copies
# of this license document, but changing it is not allowed.
#
# http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
#
OUT_DIR=out
PAD_LENGTH=5
if [ -z "$1" ] || [ -z "$2" ] ; then
echo “./move.sh <number-to-start-from> <extension>”
echo ” ”
echo “./move.sh 12 JPG”
else
# testing output directory exist. if not create it.
if [ ! -d ${OUT_DIR} ] ; then
mkdir ${OUT_DIR}
fi
COUNTER=$1
EXT=$2
for file in *.${EXT} ; do
OUTFILE=$(printf “%0${PAD_LENGTH}i\n” “${COUNTER}”)
cp -v $file ${OUT_DIR}/${OUTFILE}.${EXT};
let COUNTER++;
done
fi
Here is the source code (pdf) for easy read/copy/paste.
[Bash] Rename files sequentially and padding 2 « /home/edivad said,
March 31, 2008 @ 11:28 am
[...] script ·Tagged bash, counter, file, pad, programming, rename, script I’ve updated my last script in order to be able to manage different file extensions provided as [...]