当我想从filename替换非ascii字符时,我遇到了一些问题。 当我想复制文件进行一些测试时,它会回答我“无法打开`FileName”进行阅读:没有这样的文件或目录。 并且所有非ascii文件都被“_”更改。 你知道如何获得真实姓名或如何用一个好的shell脚本替换它吗? 非常感谢你。
答案 0 :(得分:0)
要获取文件中的非ascii字符,用户可以使用以下sed语句。
sed 's/[^\d32-\d126]//g' <file_name>
上述说明将输入文件中的非ASCII字符打印到stdout。通过为 sed 提供-i选项,用户可以从文件中删除ASCII字符。
要用特定字符替换非ascci字符,用户可以使用以下语句。
sed 's/[\d32-\d126]/<replacing_char>/g' <file_name>
答案 1 :(得分:0)
如果 您知道在创建该文件的MacOS或Windows计算机上使用的编码,您可以使用convmv
将编码更改为您的编码:
将单个文件名从UTF16重新编码为ASCII:
$ convmv -f utf8 -t ascii --notest <FILE NAME>
使用Linux规范化将整个目录从ISO8859-1递归重编码为UTF16:
$ convmv -f iso8859-1 -t utf16 --nfc -r --notest <DIRECTORY NAME>
有关详细信息,请参阅man convmv
和man charsets
。
<强>附录:强>
如果您没有安装convmv
,可以在its project page on freecode.com上获取。