今天我也碰到了同样的问题,原因其实很简单,windows系统的文件夹不区分大小写,而linux是区分大小写的。比如文件夹L和文件夹l,在windows下不允许同时存在,为了区分他们两,就只能把文件夹名称改为ascii码了。
我的解决方式是用gpt搓一个powershell脚本,先统一把ascii码文件夹重新命名成abcd之类的,然后再把没能成功命名的文件夹里面的内容手动拷贝到对应的文件夹内,比如61里面的东西拷贝到A,6c里面的文件拷贝到L,就成功通过了terminfo部分的编译。
脚本指令如下:
# 获取当前目录下所有文件夹,并按名称的长度倒序排序(确保较长的文件夹先处理)
Get-ChildItem -Directory | Sort-Object { $_.Name.Length } -Descending | ForEach-Object {
# 获取文件夹名
$folderName = $_.Name
# 检查文件夹名称是否是十六进制数字
if ($folderName -match '^[0-9A-Fa-f]+$') {
# 将十六进制字符串转换为十进制整数
$decimalValue = [Convert]::ToInt32($folderName, 16)
# 将十进制数转换为对应的字符
$newName = [char]$decimalValue
# 检查新名称是否包含非法字符
if ($newName -match '[\\/:*?"<>|]') {
Write-Host "Skipping folder $folderName because the new name contains illegal characters."
} else {
# 重命名文件夹
Rename-Item $_.FullName -NewName $newName
Write-Host "Renamed folder $folderName to $newName"
}
}
}