【日常积累】Linux下文件乱码解决

linux下删除乱码文件、目录

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

[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的知识请前往博客主页查看。

你可能感兴趣的:(日常积累,linux,运维)