I have a set of files which I want to rename by special pattern. The set of files is in form like image{1..30}.jpg and I need all files in form image{1..30}.thumbnail.jpg.
Result script is
#! /bin/bash
for file in *.jpg; do
parts=(${file//./ });
newfile=${parts[0]}'.thumb.'${parts[1]}
mv $file $newfile
done
As bonus small collection of commands for string manipulation in bash
array=(${string//./ }) - split string to array by character (in this case, point);${#string} string length;${string:start:length} - extract a substring from start with length characters;${string/pattern/replace} - find and replace first match;${string//pattern/replace} - find and replace all matches;Check if string contains substring, first alternative
string='lorem ipsum'; if [[ $string =~ ipsum ]] then echo "It's there!"; fi
Second alternative
case "$string" in
*lorem* ) echo "I've found lorem";;
*foo* ) echo "I've found foo";;
* ) echo "I have not found any interesting ...";;
esac