2015-10-17 66 views
0

我需要創建一個命令,使用grep實用程序在當前工作目錄內的所有文件中搜索首字母縮寫詞EOF。這個命令應該重定向和標準輸出到一個文件名爲RESULTS.TXT和錯誤輸出追加到一個名爲error.txtgrep實用程序和重定向並追加標準輸出

我無法測試這些場景文件。這是我有什麼可以有人請幫助我這一點。

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

當我測試這個results.txt有EOF在它。如果我在cat之後拋出-p(我的錯誤),它會清除results.txt。我試圖測試error.txt。我只是想着這個錯誤的方式嗎?

回答

0

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

問題第一:
-r是遞歸的標誌 - 它會搜索當前和所有子目錄中的所有文件。
•把results.txt在當前目錄 grepping當前目錄 - grep的會發現在RESULTS.TXT的結果,它已經在其他文件中找到。
「UUOC」 ...你不通過當前目錄cat

grep的要管,把結果和錯誤的其他地方(在這裏,把在父目錄) grep 'EOF' * >> ../results.txt 2> ../error.txt
這將追加到RESULTS.TXT,但覆蓋error.txt >是「上對」覆蓋文件,而>>是「追加到」。

用grep一些其他目錄,將導致當前目錄
grep 'EOF' subdir/* >> results.txt 2> error.txt

這兩個會吐出在搜索目錄中找到的任何目錄錯誤。

我喜歡find
find ./subdir -type f -exec fgrep 'EOF' {} + >> results.txt 2> error.txt
僅查找文件-type f或目錄./subdir和fgrep一樣下方(「固定」的grep,它的速度更快,因爲在「EOF」沒有正則表達式) - fgrep命令的所有文件如上所述,將輸出和錯誤寫入文件。
添加「深度」參數以僅搜索給定的目錄,而不是子目錄:
find ./subdir -depth 1 -type f -exec (...etc...)