我想递归遍历给定文件夹的所有子文件夹,并且对于给定扩展名(可选通配符)的所有文件,搜索并替换一些文本。
这里有一个类似的previous question ,我正在尝试为我的目的获得最佳答案的修改版本。它使用 Powershell 进行查找和替换。但是,我下面的修改版本不是递归的。我不记得我在哪里找到recurse
第一行的部分,所以也许我使用不正确。
Get-ChildItem *.* -exclude *.ps1* -recurse |
Foreach-Object {
$c = ($_ | Get-Content)
$c = $c -replace 'foo','bar'
[IO.File]::WriteAllText($_.FullName, ($c -join "`r`n"))
}
我将 Powershell 命令行中的代码作为 PS 批处理文件运行.ps1
,因此排除了该扩展名。
如果我直接在包含一些我想要搜索的文件的文件夹中运行它,这很好,但是如果我从该文件夹的父文件夹运行它,则不会发生子文件夹的搜索/递归。它甚至没有尝试,我可以从命令立即完成运行的事实中看出这一点。如果我在我的第一个子文件夹中运行它,它有大约 50 个文本文件,在它完成之前会有几秒钟的延迟,这表明它实际上是在搜索这些文件。
我也试过这个,去掉了排除部分,行为是一样的。