我(管道)xargs问题与奇数文件名(是:重定向运算符>在MacOS停止工作)

时间:2015-12-08 18:28:01

标签: 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]]
    [-e pattern] [-f file] [--binary-files=value] [--color=when]
    [--context[=num]] [--directories=action] [--label] [--line-buffered]
    [--null] [pattern] [file ...]

单独执行命令

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

grep "import" *.js > ../out.txt

工作得很好。所以问题是以某种方式管道' |'和重定向'>'停止了合作。 有什么想法吗?

我正在运行Os X Yosemite(10.10.5)

2 个答案:

答案 0 :(得分:1)

“find ... | xargs grep ...”运算符组合对传递的文件名很敏感。如果文件名可以被识别为命令(在我的情况下为grep)选项,则该命令会将其视为选项,而不是文件名。

仅提供一般信息,在“babel”node.js模块中找到了有问题的文件。

答案 1 :(得分:0)

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

像这样:

public void makeIcons(Coordinate obj){
    Icon temp = new Icon(obj);
    points.add(temp);

    //add the temp JComponent to this JPanel
    this.add(temp);
    temp.paintComponent(this.getGraphics());
    revalidate();
}