Votre principal problème est que vous essayez d'utiliser / comme séparateur, quand / est également un caractère que vous allez analyser.
Vous devrez utiliser un séparateur différent, comme un tuyau. Faites correspondre tout et un / , puis utilisez \( et \) (groupes de capture) délimitant la partie que vous souhaitez extraire, et utilisez \1 , rendant ce groupe :
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Vous pouvez le faire fonctionner sans groupes de capture :il suffit de tout laisser tomber jusqu'au dernier / :
echo "yourstring" | sed 's|.*/||'
Pourquoi ne pas utiliser basename pour ça? Par exemple :
for file in *mp3; do basename "$file"; done