Resposta curta:
Se você quer apenas passar um monte de linhas como argumentos para outro comando, xargs
é seu amigo - neste caso, porque você está colocando-o no meio de um comando, você vai querer usar o comando -I {}
flag. Isso define {}
como um espaço reservado para que você possa colocá-lo em qualquer lugar (você pode definir seu próprio espaço reservado, mas eu costumo ficar com {}
, pois não será confundido com muitas outras coisas.
Juntando tudo (assumindo que os comandos que você deu façam o que você acha que eles fazem!):
find server/lib -type f -exec basename {} \; | cut -f 1 -d '.' | xargs -I {} grep -R --exclude-dir=node_modules {} . -l
Resposta longa
Ok, então provavelmente podemos levar isso adiante. Digamos que você queria o formato mencionado anteriormente - você pode xargs
to sh -c
para poder comandar a cadeia:
find server/lib -type f -exec basename {} \; | cut -f 1 -d '.' | xargs -I {} sh -c "echo {}; grep -R --exclude-dir=node_modules {} . -l"
Rodando isso na minha máquina, parece que isso está te dando os arquivos onde o arquivo é encontrado. Meu cérebro está cansado, então, em vez de envolvê-lo em um script legal (que é o que você deve fazer quando os oneliners começam a ficar retorcidos, e use link enquanto você está nisso) você pode ter este hack horrível em seu lugar, que (eu acho) lhe dará a saída que você está procurando:
find server/lib -type f -exec basename {} \; | cut -f 1 -d '.' | xargs -I {} sh -c "echo {}; grep -R --exclude-dir=node_modules {} . -l && printf \"\n\" || printf \"Not found\n\n\""