Extract filename and extension in Bash
First, get file name without the path:
filename=$(basename -- "$fullfile")extension="${filename##*.}"filename="${filename%.*}"
Alternatively, you can focus on the last '/' of the path instead of the '.' which should work even if you have unpredictable file extensions:
filename="${fullfile##*/}"
You may want to check the documentation :
- On the web at section "3.5.3 Shell Parameter Expansion"
- In the bash manpage at section called "Parameter Expansion"
~% FILE="example.tar.gz"~% echo "${FILE%%.*}"example~% echo "${FILE%.*}"example.tar~% echo "${FILE#*.}"tar.gz~% echo "${FILE##*.}"gz
For more details, see shell parameter expansion in the Bash manual.