Bash: Get Filename, File Extension and Path from Full Path
The following commands will allow you extract various information from the full path of a file.
Part of the information is the filename, the file extension, the file base and the directory it is located in.
# Truncate the longest match of */ from the beginning of the string filename="${fullpath##*/}"; # Get the sub-string from the start (position 0) to the position where the filename starts directory="${fullpath:0:${#fullpath} - ${#filename}}"; # Strip shortest match of . plus at least one non-dot char from end of the filename base="${filename%.[^.]*}"; # Get the sub-string from length of base to end of filename extension="${filename:${#base} + 1}"; # If we have an extension and no base, it means we do not really have an extension but only a base if [[ -z "$base" && -n "$extension" ]]; then base=".$extension"; extension=""; fi echo -e "Original:\t'$fullpath':\n\tdirectory:\t'$directory'\n\tfilename:\t'$filename'\n\tbase name:\t'$base'\n\textension:\t'$extension'"