2

假设我有几个包含单词“not”的文本文件,我想找到它们并创建一个包含匹配项的文件。在 Linux 中,我可能会这样做

grep -r not *.txt > found_nots.txt

这工作正常。在 PowerShell 中,以下内容在屏幕上显示了我想要的内容

get-childitem *.txt -recurse | select-string not

但是,如果我将其通过管道传输到文件:

get-childitem *.txt -recurse | select-string not > found_nots.txt

它运行了很长时间。我最终 CTRL-C 退出并查看 found_nots.txt 文件,它确实很大。看起来 PowerShell 将输出文件作为要搜索的文件之一包含在内。每次添加更多内容时,它都会发现要添加的内容更多。

我怎样才能停止这种行为并使其表现得更像 Unix 版本?

4

2 回答 2

4

使用该-Exclude选项。

get-childitem *.txt -Exclude 'found_nots.txt' -recurse | select-string not > found_nots.txt
于 2013-08-23T14:54:47.237 回答
3

第一个简单的解决方案是将文件输出扩展名重命名为另一个

于 2013-08-23T14:46:48.490 回答