查找并替换多个文件中的文本


3

我希望有人可以花时间帮我创建一个批处理文件或类似文件来查找和替换几个文件中的文本。我尝试了许多“搜索和替换”实用程序,但没有找到能满足我需要的东西。

要求如下:在具有不同文本FOR FOR FACH FILE的多个文件中查找和替换SAME文本。

例:

File1.txt,file2.txt,file3.txt都有一个文本字符串“please me please”

for file1.txt将文本字符串“change me please”替换为“file1 changed”保存为file2.txt的原始文件名(file1.txt)替换文本字符串“change me please”to“file2 changed”另存为原始文件名(file2。 txt)for file3.txt将文本字符串“change me please”替换为“file3 changed”另存为原始文件名(file3.txt)


如果指定了“使用通配符搜索文件”,则此问题会更有用。
Eugene van der Merwe 2014年

Answers:


2

使用PowerShell命令:

Get-Content c:\file1.txt | ForEach-Object { $_ -replace "change me please", "file1 changed" } | Set-Content c:\changed1.txt

Get-Content c:\file2.txt | ForEach-Object { $_ -replace "change me please", "file2 changed" } | Set-Content c:\changed2.txt

留给我两个文件:

changed1.txt

changed2.txt

有些人可以告诉我如何重命名这些文件并覆盖原件:

changed1.txt到file1.txt

changed2.txt改为file2.txt


1

Powergrep可以做你想要的。


谢谢你的回答,我看了一下powergrep,虽然我确定它很精彩..我不能证明我想要经常做的几个文件的%159.00价格标签:(

或者下载activeperl。。。
surfasb 2011年

1

如果文件不是太大,那么你可以使用

$filenames = @("file1.txt", "file2.txt", "file3.txt")

foreach ($file in $filenames) 
{
    $replacementStr = $file + ' changed' 
    (Get-Content $file) | 
        Foreach-object { $_ -replace 'change me please' , $replacementStr   } | 
     Set-Content $file
}

请注意括号(Get-Content $ file),这意味着文件被读入内存(因此要求文件很小),但这意味着当您将文件写回时,该文件不再使用。

如果文件对于内存来说太大,你可以将它写入临时文件,然后使用类似的东西

Cp $tempfilename $file 
rm $tempfilename

将临时文件复制到原始文件并删除临时文件。


1

我发现你的脚本有问题。让$ replacementStr = $ file +'changed'将sting $文件添加到更改的文件中。应该是:$ replacementStr ='已更改'

我为了自己的目的修改了这个,但现在文件名是动态的,字符串被正确更改,路径不会被破坏。

不要忘记先运行它... Set-ExecutionPolicy RemoteSigned

代码如下:

$filenames = @(get-childitem -Path "C:\Program Files\Tivoli\TSM\baclient\*.opt" | % { $_.FullName })

        foreach ($file in $filenames) 
        {
            $replacementStr = 'New String' 
            (Get-Content $file) | 
                Foreach-object { $_ -replace 'Old String' , $replacementStr   } | 
             Set-Content $file
             Write-Host Processed $file
        }

JW



0

您可以使用eclipse - 只需将文件加载到项目中,按照以下页面中的说明操作:

http://www.avajava.com/tutorials/lessons/how-do-i-do-a-find-and-replace-in-multiple-files-in-eclipse.html?page=1

基本上搜索包含文件的文件夹。结果将显示在搜索选项卡中。右键单击包含要更改的文件的文件,然后选择“替换”。

这将更改您想要的所有文件。添加了在eclipse项目中使用文件的好处,这可以通过许多不同的方式提供帮助。(源代码控制,语法高亮,单元测试等)


0

在Notepad ++中打开多个文件,可以在所有打开的文件中查找/替换。


Notepad ++可以在批处理文件中自动化吗?如果是这样,OP怎么会这样呢?如果没有,这不符合OP的问题。
Heptite 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.