打酱油的小核桃 2021-01-22 13:33 采纳率: 0%
浏览 13

linux命令行搜素步到中文文件

linux操作系统,在图形界面里,可以正常显示,(带中文的文件名),因需要定期对这部分文件进行备份。就写了一个脚本。

因此发现,这部分文件不能再命令行下操作,搞不明白什么原因。

尝试用ls 显示目录下的所有文件,文件名为乱码,数量正常。但是用ls  *.pro*  查找时,找不到文件。

不知道什么原因,请大侠指教

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 14:49
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Linux中,ls命令默认只搜索标准的ASCII字符,并且不支持多语言编码的文件名。要解决这个问题,你需要使用一个特定于你的系统或平台的语言编码转换工具,例如iconv或者awk

    以下是两种方法:

    1. 使用iconv

      iconv -f UTF-8 -t GBK -o file.txt file.txt
      
    2. 使用awkLC_ALL=C环境变量:

      echo "file.txt" | awk '{print $0}' | LC_ALL=C sort > file.txt
      

      这段代码会将文件名转换为GBK编码,并按字母顺序排序。

    请注意,这些方法可能不会完全正确地处理所有的文件名,特别是那些包含特殊符号、空格或其他非ASCII字符的文件名。在这种情况下,你可能需要考虑其他方法,比如手动调整文件名,或者创建一个专门用于存储带有中文文件名的文件夹。

    另外,如果你的文件名确实包含了大量的非ASCII字符,那么你可以考虑使用一些专门的文本编辑器,如vi或nano,它们通常有更强大的功能来处理Unicode文件名。

    以上答案仅供参考,具体实现可能因你的具体需求而异。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵