Como filtrar linhas passadas por um pipe?

2

Eu tenho um comando foo que gera uma lista de nomes de arquivos:

$ foo
file1.a
file2.b
file3.a

E um comando bar que aceita os nomes dos arquivos .a como argumentos e faz algum processamento:

$ bar file1.a file3.a
Great success!
$ bar file2.b
FAILURE

Gostaria de combinar os dois com um pipe como foo | xargs bar , mas preciso filtrar todos os nomes de arquivos que não terminam em .a . Como posso fazer isso? Idealmente, eu quero algo simples, eu posso ficar entre os dois comandos em um pipe, como foo | filter-lines ".a" | xargs bar .

    
por Jack 06.06.2016 / 22:46

1 resposta

7

Você pode usar grep para pegar todos os arquivos em foo que terminam com .a .

foo | grep "\.a$" | xargs -d'\n' -r bar

    
por 06.06.2016 / 22:53