Você pode usar xargs
para isso. Vai levar o que é canalizado em stdin e usá-lo como argumentos para um subcomando. Então, no seu caso, pode ser assim:
ls Music | grep <keyword> | xargs vlc &
Agora, esta sequência de comandos provavelmente ainda terá alguns problemas, principalmente espaço em branco. Por padrão, xargs
dividirá sua entrada em qualquer whitepsace, portanto, se você tiver um arquivo chamado Artist Name - Track Name.mp3
, então xargs
enviará 5 argumentos separados para vlc
: Artist
, Name
, -
, Track
, Name.mp3
. Felizmente há uma maneira de contornar isso. Se você usar a opção -0
para xargs
, ela usará nulo
para dividir sua entrada em argumentos para o subcomando. E, como acontece, o comando find
find
suporta a gravação de correspondências de nomes de arquivos com um separador nulo (e ls | grep
é uma ferramenta melhor para localizar arquivos do que %code% de qualquer maneira).
Então, isso pode ser um canal melhor:
find Music -iname '*<keyword>*' -print0 | xargs -0 vlc &