$ echo {a,b,c}.h d e.h |xargs -IA find A -name '*.h'
find: `a.h b.h c.h d e.h': No such file or directory
$ echo -e a.h\\nb.h c.h d e.h |xargs -IA find A -name '*.h'
a.h
find: `b.h c.h d e.h': No such file or directory
Проблема в том, что -I
подразумевает, что xargs будет предполагать, что аргументы ограничены символом новой строки. Я не уверен, почему это так. Я считаю, что могу решить эту проблему с помощью sed, но мне интересно, есть ли хитрость xargs или идиома, с которыми я не знаком, которые люди используют для решения этой проблемы.
Я ищу решение, которое также будет работать в OS X. В OS X ключ xargs -J, кажется, работает нормально. На man-странице утверждается, что этот переключатель будет просто контролировать расположение аргументов для исполняемого файла - именно это я и хочу.