Easiest way to check for file extension in bash?
bash, gzip, shell, unix
Solution
You can do this with a simple regex, using the `=~` operator inside a `[[...]]` test:
if [[ $file =~ \.gz$ ]];
This won't give you the right answer if the extension is `.tgz`, if you care about that. But it's easy to fix:
if [[ $file =~ \.t?gz$ ]];
The absence of quotes around the regex is necessary and important. You could quote `$file` but there is no point.
It would probably be better to use the `file` utility:
$ file --mime-type something.gz
something.gz: application/x-gzip
Something like:
if file --mime-type "$file" | grep -q gzip$; then
echo "$file is gzipped"
else
echo "$file is not gzipped"
fi
Problem
I have a shell script where I need to do one command if a file is zipped (ends in .gz) and another if it is not. I'm not really sure how to approach this, here's an outline of what I'm looking for: ``` file=/path/name* if [ CHECK FOR .gz ] then echo "this file is zipped" else echo "this file is not zipped" fi ```