Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换bash中错误显示的特殊字符_Bash_Special Characters_File Rename_Batch Rename - Fatal编程技术网

替换bash中错误显示的特殊字符

替换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ß

我已经用WinSCP上传了大量文件,包括它们的文件夹结构到我的Ubuntu12.04LTS服务器。 目标是在Owncloud中访问这些文件

但是,所有包含特殊字符(如德语Umlauts)的文件都会导致问题。在Ownclouds视图中,它们的名称在特殊字符处被截断,尝试查看该文件夹或文件将返回文件夹根目录

使用ls时,特殊字符始终显示为问号,例如“Moterschwei?en1.jpg” 有效的方法是通过shell中的“mv”手动重命名它们。正确插入特殊字符(例如本例中的“Motorschweißen1.jpg”)确实有效,但对所有字符执行此操作都需要很长时间

使用find-名称“?”不会产生任何命中率

有没有办法替换所有这些特殊字符,例如用下划线?

请尝试以下命令:


上述命令将用
替换所有非字母数字字符。有关perl正则表达式的文档,请参阅和。

谢谢您的提示。不幸的是,它不是这样工作的(除了表达式中缺少/之外,我就是找不到一个适合所有内容的charclass)。但是,了解这个命令仍然很有用。我最终通过使用convmv将iso-8859-1转换为utf-8解决了这个问题。解决方案是在适当的目录下运行convmv-r-f iso-8859-1-t utf-8*。
rename 'y/\W/_' *