当试图将文件从Windows传输到Unix环境时,我收到了错误的dos2unix格式错误
dos2unix -o /xyz/home/ABC_efg.txt未能执行dos2unix格式更改。
我试着运行一个PS脚本来修复它,但是看起来确实有效。
Get-ChildItem -File -Recurse *.txt | % { $x = get-content -raw -path $_.fullname; $x -replace "`r`n","`n" | set-content -NoNewline -path $_.fullname }发布于 2019-12-14 15:36:59
与使用-replace不同,我更愿意将内容读入字符串数组,并使用“‘n”连接这些字符串。
就像这样:
$files = Get-ChildItem -File -Recurse -Filter '*.txt' | Select-Object -ExpandProperty FullName
$files | ForEach-Object {
(Get-Content -Path $_) -join "`n" | Set-Content -Path $_ -NoNewline -WhatIf
}如果您对控制台中显示的输出满意,请删除-WhatIf开关。
发布于 2019-12-12 20:12:44
嗯,部分问题是,您正在将一个字符串传输到Set-Content,然后尝试使用该字符串来确定保存文件的位置。试着将最后一部分更改为:
$x -replace "`r`n","`n" | set-content -NoNewline -path $_.fullname对此:
set-content -NoNewline -path $_.fullname -value ($x -replace "`r`n","`n")如果没有按照您的预期更新格式,您可能需要为-Encoding使用Set-Content参数。不过,我对编码并不太熟悉,所以我对此并不确定。
https://stackoverflow.com/questions/59310875
复制相似问题