首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PowerShell格式中的LF换行符替换CRLF -表输出

问用PowerShell格式中的LF换行符替换CRLF -表输出
EN

Stack Overflow用户
提问于 2019-06-08 13:33:49
回答 1查看 573关注 0票数 0

我一直在尝试复制Unix命令find . -type f -exec md5sum {} +的输出,以计算PowerShell中某个目录及其子目录中所有文件的哈希值(即两列:小写的MD5哈希值和相对文件路径)。在下面的代码中,有没有更好的方法让换行符标记为换行符,而不是回车符和换行符?

代码语言:javascript
复制
$Result = Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "*.*" -Recurse) | Select-Object @{N='Hash';E={$_.Hash.ToLower()}},@{N='Path';E={$_.Path | Resolve-Path -Relative}}
($Result | Format-Table -AutoSize -HideTableHeaders | Out-String).Trim() + "`n" -replace ' *\r\n',"`n" | Set-Content -NoNewline -Encoding ascii $ENV:USERPROFILE\Desktop\MYFOLDER\hashes.txt

第一行返回小写的散列和相对路径。

第二行使用Format-Table来排除列标题(使用选项-HideTableHeaders加上选项-AutoSize来避免截断较长的相对文件路径)。

Out-String将输出转换为字符串,而.Trim()删除前面和后面的空行。

现在,我添加了一个换行符

代码语言:javascript
复制
`+ "`n"`

然后使用

代码语言:javascript
复制
`-replace ' *\r\n',"`n"`

来进行替换,并消除每行末尾的任何额外空格。最后,Set-Content使用选项-NoNewline来避免换行符为回车符。

我见过类似的问题:Replace CRLF using powershell和In PowerShell how to replace carriage return

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-09 19:02:10

这种方法不是替换所有的"\r\n"换行符,而是构建一个字符串列表,并将它们与所需的换行符连接在一起:

代码语言:javascript
复制
$path = 'YOUR ROOT DIRECTORY'
$algo = 'MD5'

$list = Get-ChildItem -Path $Path -File -Recurse | Get-FileHash -Algorithm $algo | ForEach-Object {
    "{0} {1}" -f $_.Hash.ToLower(), (Resolve-Path $_.Path -Relative)
}
Set-Content -Path 'D:\checksums.txt' -Value ($list -join "`n") -NoNewline -Encoding Ascii -Force

另一种方法是将StringBuilder对象与其AppendFormat方法一起使用:

代码语言:javascript
复制
$path = 'YOUR ROOT DIRECTORY'
$algo = 'MD5'

$sb = New-Object -TypeName System.Text.StringBuilder
Get-ChildItem -Path $Path -File -Recurse | Get-FileHash -Algorithm $algo | ForEach-Object {
    [void]$sb.AppendFormat("{0} {1}`n", $_.Hash.ToLower(), (Resolve-Path $_.Path -Relative))
}
# trim off the final "`n"
$sb.Remove($sb.Length -1, 1)

Set-Content -Path 'D:\checksums.txt' -Value $sb.ToString() -NoNewline -Encoding Ascii -Force
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56503767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档