-iname
avalia seu argumento, *
, ?
e []
têm um significado especial para ele, então você precisa escapar deles se quiser passá-los literalmente.
Considere também usar -quit
caso você encontre dois ou mais arquivos em pastas diferentes (duplicatas?). Eu acho que você espera que dname
seja um nome de diretório único.
Eu entendo que $video
já foi dado:
video="[HD, 1920x1080] - Wild Wild West.mp4"
Nesse caso, tente:
video1=$(echo $video | sed 's|\[|\[|g; s|\]|\]|g')
dname=$(find /run/media/user/usbdisk -type f -iname "$video1" -exec dirname {} \; -quit)
Isso pode ser feito em uma linha. Eu escolhi introduzir uma variável adicional para maior clareza.