Você pode fazer
$ cd $( ls | grep foo )
mas isso só funcionará se o resultado for relativo ao local em que você está; para qualquer coisa mais você vai querer find (ele irá imprimir caminhos) e um padrão grep muito específico.
Eu quero fazer ls | grep something e cd para a única coisa listada. Eu tentei com | e procurei, mas nada foi encontrado. Está usando xargs ?
Você pode fazer
$ cd $( ls | grep foo )
mas isso só funcionará se o resultado for relativo ao local em que você está; para qualquer coisa mais você vai querer find (ele irá imprimir caminhos) e um padrão grep muito específico.
Se o padrão que você deseja corresponder puder ser expresso como glob, e você sabe que haverá apenas uma correspondência, você poderá permitir que a sua shell faça a correspondência:
$ cd *foo*
Caso contrário, a opção mais fácil é comandar a substituição para fornecer o parâmetro para cd :
$ cd $(ls | grep '*foo*' | head -n1)