2017-08-07 82 views
1

我想用超過1000個文件(使用PowerShell)替換一個url。 即代替thomas.corp.test.com:81/gt/se.ashxgeorge.corp.test.com:91/gt/se.ashxGrep和SED在PowerShell中不工作

我可以使用以下命令在linux機器上執行它。

grep -lr http:\/\/thomas\.corp\.test\.com:81\/gt\/se\.ashx . | 
    xargs sed -i '' 's/http:\/\/thomas\.corp\.test\.com:81\/gt\/se\.ashx/https:\/\/george\.corp\.test\.com:91\/gt\/se\.ashx/g' 

需要幫助找出PowerShell的等效項。

+0

誰是保持負..請具體 – TomJava

+1

沒有downvote,但你怎麼能希望找到在Windows OS的Linux命令?如果你想在Windows上使用bash環境,你可以在gnuwin32(GNU工具的簡單端口),MinGW(靠近bash控制檯)或Cygwin(幾乎是Windows上的Linux模擬)上使用google。你目前的問題很糟糕,因爲它沒有顯示任何研究。你應該閱讀[問]看到山楂問題應該在這裏被問到。 –

+1

@SergeBallesta:*「......你如何能夠在Windows操作系統上找到Linux命令?」* Linux的[Windows子系統](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux),又名「Ubuntu在Windows上「,是64位Windows 10的可選功能。 –

回答

1

嘗試這樣:

$odl="thomas.corp.test.com:81/gt/se.ashx" 
$new="george.corp.test.com:91/gt/se.ashx" 

select-string -Path "c:\temp\*.*" -Pattern $odl -SimpleMatch | %{$curpath=$_.path; (get-content $curpath -Raw) -replace $odl, $new | Out-File $curpath} 
+0

get-childitem c:\ somedir -recurse -include *。* | select -expand fullname | foreach {Get-Content $ _)-replace $ old,$ new | 設置內容$ _ } – TomJava

+0

你能告訴它的區別嗎? – TomJava

+1

隨着你的方法2的問題:getchilditem不僅需要文件目錄。並且您的替換適用於所有文件,而不僅僅是文件內容,您的舊版本 - >性能較差 – Esperento57

1

$舊= 「thomas.corp.test.com:81/gt/se.ashx」

$新=「george.corp.test。 com:91/gt/se.ashx「

get-childitem c:\ somedir -recurse -include | select -expand fullname | foreach { (Get-Content $ )-replace $ old,$ new | 設置內容$

}