Se o nome do arquivo estiver em uma variável, a maneira canônica de remover um prefixo é:
removepre="foo bar "
filename="foo bar XXX doo par.jpg"
filename="${filename#"$removepre"}"
echo "$filename"
O problema com o sufixo que você apresenta é que existe uma extensão que você deseja preservar, então ele se torna um pouco mais longo:
removesuf=" doo par"
filename="foo bar XXX doo par.jpg"
extension="${filename##*.}" ### store extension in a variable.
filename="${filename%.*}" ### remove extension.
filename="${filename%"$removesuf"}" ### remove suffix.
filename="$filename.$extension" ### re-place the extension
echo "$filename"
Todos participaram de um script:
#!/bin/bash
filename="$1"
removepre="foo bar "
filename="${filename#"$removepre"}"
removesuf=" doo par"
extension="${filename##*.}" ### store extension in a variable.
filename="${filename%.*}" ### remove extension.
filename="${filename%"$removesuf"}" ### remove suffix.
filename="$filename.$extension" ### re-place the extension
echo "$filename"
Chame o script assim:
$ ./script "foo bar XXX doo par.jpg"
XXX.jpg"
Entenda que as cotações são obrigatórias para processar nomes de arquivos com espaços.