linux操作系统,在图形界面里,可以正常显示,(带中文的文件名),因需要定期对这部分文件进行备份。就写了一个脚本。
因此发现,这部分文件不能再命令行下操作,搞不明白什么原因。
尝试用ls 显示目录下的所有文件,文件名为乱码,数量正常。但是用ls *.pro* 查找时,找不到文件。
不知道什么原因,请大侠指教
linux操作系统,在图形界面里,可以正常显示,(带中文的文件名),因需要定期对这部分文件进行备份。就写了一个脚本。
因此发现,这部分文件不能再命令行下操作,搞不明白什么原因。
尝试用ls 显示目录下的所有文件,文件名为乱码,数量正常。但是用ls *.pro* 查找时,找不到文件。
不知道什么原因,请大侠指教
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Linux中,ls
命令默认只搜索标准的ASCII字符,并且不支持多语言编码的文件名。要解决这个问题,你需要使用一个特定于你的系统或平台的语言编码转换工具,例如iconv
或者awk
。
以下是两种方法:
使用iconv
:
iconv -f UTF-8 -t GBK -o file.txt file.txt
使用awk
和LC_ALL=C
环境变量:
echo "file.txt" | awk '{print $0}' | LC_ALL=C sort > file.txt
这段代码会将文件名转换为GBK编码,并按字母顺序排序。
请注意,这些方法可能不会完全正确地处理所有的文件名,特别是那些包含特殊符号、空格或其他非ASCII字符的文件名。在这种情况下,你可能需要考虑其他方法,比如手动调整文件名,或者创建一个专门用于存储带有中文文件名的文件夹。
另外,如果你的文件名确实包含了大量的非ASCII字符,那么你可以考虑使用一些专门的文本编辑器,如vi或nano,它们通常有更强大的功能来处理Unicode文件名。
以上答案仅供参考,具体实现可能因你的具体需求而异。