Uma maneira de fazer isso é usar urlencode
(instalá-lo no Ubuntu via sudo apt-get install gridsite-clients
).
urlencode -m "$filepath"
irá converter o caminho para um URI. A parte "file: //" do URI será deixada de fora, mas você pode facilmente adicionar isso por meio de um one-liner bash:
uri=$(urlencode -m "$1"); echo "file://$uri"
ou diretamente
echo "file://$(urlencode -m "$1")"
ou
echo -n file://; urlencode -m "$1"
Muito obrigado a Michael Kjörling pelas referências!