Il tuo problema principale è che stai cercando di usare / come separatore, quando / è anche un carattere che dovrai analizzare.
Dovrai utilizzare un separatore diverso, ad esempio un tubo. Abbina tutto e un / , quindi utilizza \( e \) (gruppi di acquisizione) delimitando la parte che si desidera estrarre e utilizzare \1 , rendendo tale gruppo:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Potresti farlo funzionare senza gruppi di acquisizione:basta eliminare tutto fino all'ultimo / :
echo "yourstring" | sed 's|.*/||'
Perché non usare basename per questo? Ad esempio:
for file in *mp3; do basename "$file"; done