by Sai gowtham

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

Top Udemy Courses

JavaScript - The Complete Guide 2020 (Beginner + Advanced)
JavaScript - The Complete Guide 2020 (Beginner + Advanced)
45,614 students enrolled
52 hours of video content
View Course
React - The Complete Guide (incl Hooks, React Router, Redux)
React - The Complete Guide (incl Hooks, React Router, Redux)
284,472 students enrolled
40 hours of video content
View Course
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
130,921 students enrolled
21 hours of video content
View Course