替换bash中错误显示的特殊字符
我已经用WinSCP上传了大量文件,包括它们的文件夹结构到我的Ubuntu12.04LTS服务器。 目标是在Owncloud中访问这些文件 但是,所有包含特殊字符(如德语Umlauts)的文件都会导致问题。在Ownclouds视图中,它们的名称在特殊字符处被截断,尝试查看该文件夹或文件将返回文件夹根目录 使用ls时,特殊字符始终显示为问号,例如“Moterschwei?en1.jpg” 有效的方法是通过shell中的“mv”手动重命名它们。正确插入特殊字符(例如本例中的“Motorschweißen1.jpg”)确实有效,但对所有字符执行此操作都需要很长时间 使用find-名称“?”不会产生任何命中率 有没有办法替换所有这些特殊字符,例如用下划线?请尝试以下命令:替换bash中错误显示的特殊字符,bash,special-characters,file-rename,batch-rename,Bash,Special Characters,File Rename,Batch Rename,我已经用WinSCP上传了大量文件,包括它们的文件夹结构到我的Ubuntu12.04LTS服务器。 目标是在Owncloud中访问这些文件 但是,所有包含特殊字符(如德语Umlauts)的文件都会导致问题。在Ownclouds视图中,它们的名称在特殊字符处被截断,尝试查看该文件夹或文件将返回文件夹根目录 使用ls时,特殊字符始终显示为问号,例如“Moterschwei?en1.jpg” 有效的方法是通过shell中的“mv”手动重命名它们。正确插入特殊字符(例如本例中的“Motorschweiß
上述命令将用
替换所有非字母数字字符。有关perl正则表达式的文档,请参阅和。谢谢您的提示。不幸的是,它不是这样工作的(除了表达式中缺少/之外,我就是找不到一个适合所有内容的charclass)。但是,了解这个命令仍然很有用。我最终通过使用convmv将iso-8859-1转换为utf-8解决了这个问题。解决方案是在适当的目录下运行convmv-r-f iso-8859-1-t utf-8*。
rename 'y/\W/_' *