Sim, você pode usar xargs
para isso.
Por exemplo, um simples:
$ locate commands.cfg | xargs grep check_dns
(Quando grep
vê vários arquivos, ele pesquisa em cada um deles e ativa a impressão de nomes de arquivo ao longo das correspondências.)
Ou você pode ativar explicitamente a impressão de nome de arquivo por meio de:
$ locate commands.cfg | xargs grep -H check_dns
(Apenas no caso de um grep
ser chamado apenas com 1 argumento por xargs
)
Para programas que aceitam apenas um argumento de nome de arquivo (diferente de grep
), você pode restringir o número de argumentos fornecidos como este:
$ locate commands.cfg | xargs -n1 grep check_dns
Isso não imprime os nomes dos arquivos de onde as linhas são correspondentes.
O resultado é equivalente a:
$ locate commands.cfg | xargs grep -h check_dns
Com um moderno locate / xargs, você também pode proteger contra problemas de espaço em branco:
$ locate -0 commands.cfg | xargs -0 grep -H check_dns
(Por padrão, o espaço em branco separa a entrada de xargs
- o que, obviamente, é um problema quando os nomes dos arquivos contêm espaço em branco ...)