xargs no OSX: opção ilegal -

4

Estou no OSX. Eu quero executar um script python contra todos os pngs em um diretório particular. Isso é o que eu tentei:

find docs/ -name "*png" | xargs --replace=F python myscript.py "F"

Mas eu vejo isso:

xargs: illegal option -- -
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
             [-L number] [-n number [-x]] [-P maxprocs] [-s size]
             [utility [argument ...]]

O que estou fazendo de errado?

    
por Richard 24.05.2016 / 16:26

2 respostas

7

xargs no Mac OS X não suporta a opção --replace ; você pode usar -I :

find docs/ -name "*png" | xargs -I F python myscript.py "F"

A estranha mensagem de erro é produzida porque esta versão de xargs interpreta caracteres após um único - como opções, então com --replace está procurando por uma opção chamada - , que não existe.

    
por 24.05.2016 / 16:32
2

Mac OSX xargs não suporta longos opções como GNU xargs . Para usar --replace como o GNU xargs, use -I :

find docs/ -name "*png" | xargs -I F python myscript.py "F"

Observe que essa abordagem é interrompida com o nome do arquivo contendo nova linha, você deseja usar find -print0 com xargs -0 :

find docs/ -name "*png" -print0 | xargs -0 -I F python myscript.py "F"

ou padrão:

find docs/ -name "*png" -exec python myscript.py {} +
    
por 24.05.2016 / 16:33

Tags