I(管道)xargs问题,文件名为奇数(was:Redirection operator>;在MacOS中已停止工作)

I(管道)xargs问题,文件名为奇数(was:Redirection operator>;在MacOS中已停止工作),macos,unix,grep,pipe,operator-keyword,Macos,Unix,Grep,Pipe,Operator Keyword,由于某种原因,管道和重定向操作符(“|”和“>”)在我的MacOS中停止工作。 多年来,我一直在使用像 find . -name "*.js" | xargs grep "import" > ../out.txt 查找目录树中出现的字符串。但最近我发现了以下错误: grep: unrecognized option `--out-file' usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]

由于某种原因,管道和重定向操作符(“|”和“>”)在我的MacOS中停止工作。 多年来,我一直在使用像

find . -name "*.js" | xargs grep "import" > ../out.txt
查找目录树中出现的字符串。但最近我发现了以下错误:

grep: unrecognized option `--out-file'
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
    [-e pattern] [-f file] [--binary-files=value] [--color=when]
    [--context[=num]] [--directories=action] [--label] [--line-buffered]
    [--null] [pattern] [file ...]
单独地,命令

find . -name "*.js" > ../out.txt

你工作得很好。所以问题是管道“|”和重定向“>”不知何故停止了工作。 有什么想法吗

我正在运行Os X Yosemite(10.10.5)

“find…| xargs grep…”运算符组合对传递的文件名敏感。如果一个文件名可以被识别为命令的(在我的例子中是grep)选项,那么命令会将其视为一个选项,而不是文件名

仅作为一般信息,在“babel”node.js模块中发现了有问题的文件。

“find…| xargs grep…”运算符组合对传递的文件名敏感。如果一个文件名可以被识别为命令的(在我的例子中是grep)选项,那么命令会将其视为一个选项,而不是文件名


仅作为一般信息,在“babel”node.js模块中发现了有问题的文件。

一些文件名可以识别为grep的选项(--out file)。 只需使用-print0选项进行查找

像这样:

find . -name "*.js" -print0 | xargs -0 grep "import" > ../out.txt

某些文件名可以识别为grep的选项(--out file)。 只需使用-print0选项进行查找

像这样:

find . -name "*.js" -print0 | xargs -0 grep "import" > ../out.txt

您确定
find
找到的某个文件不包含任何奇怪的模式,例如
--out file
。。。更改你问题的标题,这不是重定向的问题。谢谢Jean Baptiste,你说得对!您确定
find
找到的某个文件不包含任何奇怪的模式,例如
--out file
。。。更改你问题的标题,这不是重定向的问题。谢谢Jean Baptiste,你说得对!