Como outros afirmaram, o xargs
genérico não pode fazer isso sozinho. Continuando com as ferramentas comuns do Unix, você precisará usar o comando cut
para remover as informações extras antes de enviá-las para o xargs.
Supondo que sua entrada seja assim:
./file1 "matching string"
./file2 "matching 2"
Você pode usar |cut -f 1 -d ' ' | xargs -n 1 vi
para executar os comandos.
- O comando
cut -f 1 -d ' '
envia apenas o que está na coluna 1 para a saída. - O
xargs -n 1 vi
diz ao xargs para executar o vi, mas usa apenas um arquivo de cada vez.
Não há problema em remover o -n 1
se você quiser usar uma única instância do vi para editar todos os arquivos (para manter os buffers de copiar / colar nos arquivos).