To extract substrings from variables in bash, we can use the following syntax



  • If offset or length is negative, count from the end
  • Negative values must be separated by a space away from the colon (:) to avoid being interpreted by bash as default value substitution. (See below for examples)

Get the file extension of a filename

$ filename=foobar.txt
$ echo ${filename: -4}

Get the file name without extension

$ filename=foobar.txt
$ echo ${filename:0: -4}


  • man bash