如何解决没有 xargs -d 的 MacOS X 问题?

问题描述 投票:0回答:2

我有以下命令:

xargs -d '\n' -n 8 bash -c 'phpcs_element PSR2 "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"' -- >&2 2>/dev/null

如果我在 Linux 中运行此命令,它会起作用,如果我尝试在 Mac OSX 中运行,则不会,因为 OSX xargs 不知道 xargs -d (分隔符)。

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

有人找到解决此问题的方法吗?

Xargs版本:src/usr.bin/xargs/strnsubst.c,v 1.7 2004/10/18 15:40:47

谢谢您的建议。

linux macos xargs
2个回答
5
投票

只需使用

-0
代替(使 NUL 字符作为分隔符),并将换行符转换为 NUL(这是您首先应该用来分隔文件名列表中的项目的内容:NUL,而不是换行符是文件名中唯一不能存在的字符)。

tr '\n' '\0' |
  xargs -0 -n 8 bash -c 'phpcs_element PSR2 "${@:1:8}"' -- >&2 2>/dev/null

5
投票

如果您有 Homebrew,则可以使用此命令

findutils
安装
brew install findutils
。然后,您就可以使用
-d

您只需在

xargs
前面加上
g
(使其成为
gxargs
)。

参考:https://superuser.com/a/467284/529605

© www.soinside.com 2019 - 2024. All rights reserved.