grep实用程序和重定向并附加标准输出

时间:2015-10-17 02:07:50

标签: linux

我需要创建一个命令,使用grep实用程序在当前工作目录中的所有文件中搜索首字母缩略词EOF。此命令应重定向并将标准输出附加到名为results.txt的文件中,并将错误输出附加到名为error.txt的文件

我无法测试这些方案。这就是我有的可以有人请帮助我。

grep -r 'EOF' | cat > results.txt 2>> error.txt

当我测试这个结果时,.txt中有EOF。如果我在cat之后抛出-p(我假设的错误),它会删除results.txt。我试图测试error.txt。我只是想错了吗?

1 个答案:

答案 0 :(得分:0)

grep -r 'EOF' | cat > results.txt 2>> error.txt

首先出现问题:
 •-r是递归标志 - 这将搜索当前和所有子目录中的所有文件。
 •将results.txt放在当前目录中,而将当前目录放入其中 - grep将在results.txt中找到已在其他文件中找到的结果。
 •" UUOC" ...您不想通过cat

当前目录中的grep,将结果和错误放在其他位置(此处,放在父目录中)  grep 'EOF' * >> ../results.txt 2> ../error.txt
这将附加到results.txt,但覆盖error.txt >是" on-to"覆盖文件,而>>是"追加到"。

grep其他目录,将结果放在当前目录中 grep 'EOF' subdir/* >> results.txt 2> error.txt

这两个将为搜索目录中找到的任何目录吐出错误。

我更喜欢find
find ./subdir -type f -exec fgrep 'EOF' {} + >> results.txt 2> error.txt
仅在目录-type f或fgrep中找到文件 ./subdir和fgrep("已修复" grep,因为没有正则表达式,所以速度更快" EOF") - fgrep找到所有找到的文件,将输出和错误写入上述文件。
添加"深度"参数只搜索给定目录,而不是子目录:
find ./subdir -depth 1 -type f -exec (...etc...)