Por que 'xargs bash -ic echo' não é a mesma coisa que 'xargs echo' ou 'xargs'?

3

Espero que o comando

ls -d doc/* | grep -P "<some_pattern>" | xargs bash -ic echo

para fazer o mesmo que:

ls -d doc/* | grep -P "<some_pattern>" | xargs echo

isto é, para fornecer os arquivos correspondidos por ls -d doc/* | grep -P "<some_pattern>" , separados apenas por espaços em vez de novas linhas.

Mas eu só recebo uma nova linha como saída.

Por que isso? Como posso consertar o primeiro comando para fazer o que eu quero?

A propósito, estou usando zsh em vez de bash , mas nenhum deles funcionará.

Eu realmente preciso disso para imprimir um monte de arquivos cujos nomes de arquivos são correspondidos pelo padrão especificado por "grep" e devem ser impressos usando um comando .zshrc -aliased.

    
por k.stm 09.09.2013 / 21:41

1 resposta

4

da manchagem do bash

   -c string If the -c option is present,  then  commands  are  read  from
             string.   If  there  are arguments after the string, they are
             assigned to the positional parameters, starting with $0.

então ...

 $ echo a b c d e f g | xargs bash -ic echo

 $ echo a b c d e f g | xargs bash -ic 'echo $0 $@'
 a b c d e f g
    
por 09.09.2013 / 21:45

Tags