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...)