How to extract filename and extension separately in bash
This example will show you how to extract filename and extension separately in the bash.
Extracting file name without extension
fullfile="fun/ss/log.txt"
filename=$(basename -- "$fullfile")
filename="${filename%.*}"
echo $filename
# log
In the above code first, we have used basename
command to get basename which looks like this log.txt
on the next line, we have used %.*
to get the file name without extension.
Extracting extension without filename
fullfile="fun/ss/log.txt"
filename=$(basename -- "$fullfile")
extension="${filename##*.}"
echo $extension
Output:
.txt
Second way
You can also try the following syntax to get the filename without extension.
fullfile="fun/ss/log.txt"
filename=$(basename $fullfile .txt)
echo $filename
Output:
log