3 SC2267
Joachim Ansorg edited this page 2021-11-12 19:56:47 +01:00

GNU xargs -i is deprecated in favor of -I{}

Problematic code:

# Implicit replacement string
xargs -i ls {}

# Explicit replacement string
xargs -imyfilename ls myfilename

Correct code:

xargs -I {} ls {}

xargs -I filename ls filename

Rationale:

xargs -i is a GNU specific option. It has been deprecated in favor of the POSIX standard option -I.

Note that -i will implicitly use {} as a token if nothing is specified, while -I requires it to be explicit.

Exceptions:

None.

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!