Below is a script I use to rename image files. It does a lot, including renumbering, but it should be easy enough to modify for your needs. -------------------------------------------------------------------------------- #!/bin/bash function print_help { echo Syntax is "$0 []" } function rename_one_file { local file_suffix=${1##*.} local file_suffix=${file_suffix/%AVI/avi} local file_suffix=${file_suffix/%MPG/mpeg} local file_suffix=${file_suffix/%MPEG/mpeg} local file_suffix=${file_suffix/%JPG/jpg} local file_suffix=${file_suffix/%MOV/mov} local file_suffix=${file_suffix/%JPEG/jpeg} local file_suffix=${file_suffix/%PNG/png} local file_suffix=${file_suffix/%GIF/gif} local file_suffix=${file_suffix/%jpg/jpeg} local file_suffix=${file_suffix/%mpg/mpeg} mv "${1}" "${2}${3}.${file_suffix}" echo ${1} renamed to ${2}${3}.${file_suffix}; } function fixup_file { local source_file="$1" local file_prefix="$2" fixup_temp_sequence=$((${fixup_temp_sequence} + 1)) if [[ ${fixup_temp_sequence} -lt 10 ]]; then local file_prefix="${file_prefix}0"; fi if [[ ${fixup_temp_sequence} -lt 100 ]]; then local file_prefix="${file_prefix}0"; fi rename_one_file "${source_file}" "${file_prefix}" ${fixup_temp_sequence}; } function rename_images { pushd "$1" >/dev/null for CurrentFile in *.jpeg; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.jpg; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.png; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.gif; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.JPEG; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.JPG; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.PNG; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.GIF; do fixup_file "${CurrentFile}" "${2}-"; done find . -type f -exec chmod ugo-x {} \; find . -type f -exec chmod ugo+r {} \; popd >/dev/null } function rename_videos { pushd "$1" >/dev/null for CurrentFile in *.avi; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.mpeg; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.mpg; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.mov; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.AVI; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.MPEG; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.MPG; do fixup_file "${CurrentFile}" "${2}-"; done for CurrentFile in *.MOV; do fixup_file "${CurrentFile}" "${2}-"; done find . -type f -exec chmod ugo-x {} \; find . -type f -exec chmod ugo+r {} \; popd >/dev/null } function fixup_folder { shopt -s nullglob source_dir="$1" local new_prefix="$2" if [[ -n $3 ]]; then fixup_temp_sequence=$3; else fixup_temp_sequence=1; fi fixup_temp_sequence=$((${fixup_temp_sequence} - 1)) if [[ -d ${source_dir} ]]; then if [[ -n ${new_prefix} ]]; then rename_images "${source_dir}" "${new_prefix}"; if [[ -n $3 ]]; then fixup_temp_sequence=$3; else fixup_temp_sequence=1; fi fixup_temp_sequence=$((${fixup_temp_sequence} - 1)) rename_videos "${source_dir}" "${new_prefix}"; else print_help; fi else print_help; fi } fixup_folder "$1" "$2" "$3" -------------------------------------------------------------------------------- Josef Lowder wrote: > Can anyone provide a simple shell script command to > change the file names of all the files in a given directory? > from pict0001.jpg to just 01.jpg > from pict0002.jpg to just 02.jpg etc. etc. > with the numbers running to a few hundred pix, all with > the same "pict00..." first part of the filename. > > I looked on the 'net to find a shell script to "mass" rename the files > in any given directory and found the example below to rename the > suffix from php3 to just php, but I couldn't figure out how to modify > that to change the filename itself. > > ls -d *.php3 | sed 's/\(.*\).php3$/mv "&" "\1.php"/' | sh > > I also found a *nix utility on my system named 'rename' but I > couldn't get it to work. Below is an excerpt from the 'man' page > for 'rename' ... but what in the world is 'foo'?? > > MAN PAGE excerpt: > rename will rename the specified files by replacing > the first occurrence of from in their name by to. > For example, given the files foo1, ..., foo9, foo10, ..., foo278, the > commands > > rename foo foo0 foo? > rename foo foo0 foo?? > > will turn them into foo001, ..., foo009, foo010, ..., foo278. > And > rename .htm .html *.htm will fix the extension of your html files. > > --------------------------------------------------- > PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us > To subscribe, unsubscribe, or to change you mail settings: > http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss >