【日常积累】Linux下文件乱码问题

linux下删除乱码文件、目录

由于编码原因,在linux服务器上上传、创建中文文件或目录时,会产生乱码,如果想删除它,有时候发现用rm命令是删除不了的
这种情况下,用find命令可以删除乱码的文件或目录。
首先进入乱码文件或目录所在的目录
使用ls -i命令找到文件或目录的inode

[root@VM-4-6-centos yum.repos.d]# ll -i
total 16
263772 -rw-r--r-- 1 root root  614 Aug 14 20:50 CentOS-Base.repo
263807 -rw-r--r-- 1 root root  230 Aug 14 20:50 CentOS-Epel.repo
263947 -rw-r--r-- 1 root root 2081 Aug 14 20:50 docker-ce.repo
263761 -rw-r--r-- 1 root root   70 Aug 14 20:37 test.repo

如上,文件或目录前面的数字字符串就是inode,
接下来使用find命令查询并且删除此文件或目录

[root@k8s-m1 ~]# find -inum 917947 -delete

注意:此方法只适用于删除文件或空的文件夹。
非空文件夹怎么删除呢?
首先也是先查inode,
然后用如下命令即可:

[root@k8s-m1 ~]# find -inum 2348437 -exec rm -rf {} \;

会提示找不到此文件或文件夹,但再次查看会发现其实已经删除了。

Linux下乱码转换

在windows上使用ftp上传文件到Linux上,中文名称在Linux系统中显示为乱码。虽然将Linux的env设置了LANG=en_US.UTF-8,并且本地的Shell客户端编码也设置成UTF-8,但在Shell中(或通过http访问),仍是乱码……
原因在于,Windows 的文件名中文编码默认为GBK,压缩或者上传后,文件名还会是GBK编码,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。

yum install convmv -y
convmv -f gbk -t utf-8 -r --notest /home/要操作的文件

常用参数:
-r 递归处理子文件夹
–notest 真正进行操作,默认情况下是不对文件进行真实操作
–list 显示所有支持的编码
–unescap 可以做一下转义,比如把%20变成空格
-i 交互模式(询问每一个转换,防止误操作)

linux下有许多方便的小工具来转换编码:
文本内容转换 iconv
文件名转换 convmv

更多关于Linux的知识请前往博客主页查看。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

margu_168

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值