在使用lrzsz命令上传文件出现异常或者因编码原因上传、创建中文文件或目录时,通常都会产生乱码文件,而且这种文件是无法直接使用rm命令删除的,所以就需要使用inode来删除这种文件。

首先,先看一下乱码文件:

1
2
3
[root@slave2 ~]# ls
= =2018-11-01 04:00:00 4 anaconda-ks.cfg BMNC_DATE_PROP.txt hdfs install.log ?n Python rarlinux-x64-5.7.1.tar.gz test.sh ?????Ǘ+??K????P?q??d?1
{??? 3 ?4?.??A?8 AND derby.log hello.sql install.log.syslog pyspark rar testa time.txt z_tmp

从这里可以看到,这里还是有不少乱码文件的,奇怪的是这台机器很久没登录了,不小的啥时候生成的,使用rm命令直接删除试试。

1
2
3
4
# rm -f ?????Ǘ+??K????P?q??d?1
# ls
= 4 AND derby.log hello.sql install.log.syslog pyspark rar testa time.txt
=2018-11-01 04:00:00 anaconda-ks.c hdfs install.log ?n

这里可以看到是可以直接删除的,但是我试了另外一个环境的的确无法删除,唯一不同的就是字符集可能有区别把。

1
2
3
4
5
6
7
8
9
10
11
12
[appuser@localhost webapps]$ ll
total 20
-rw-r--r-- 1 appuser appgroup 0 Mar 15 15:19 ܘ
-rw-r--r-- 1 appuser appgroup 0 Mar 15 15:19 ????????혒#???????????C?r?1O??rkMN4?SSSSS?=5?
drwxr-x--- 15 appuser appgroup 4096 Mar 15 15:15 docs
drwxr-x--- 7 appuser appgroup 4096 Mar 15 15:15 examples
drwxr-x--- 6 appuser appgroup 4096 Mar 15 15:15 host-manager
drwxr-x--- 6 appuser appgroup 4096 Mar 15 15:15 manager
drwxr-x--- 3 appuser appgroup 4096 Mar 15 15:15 ROOT
[appuser@localhost webapps]$ rm -f ????????혒#???????????C?r?1O??rkMN4?SSSSS?=5?
[appuser@localhost webapps]$ ls
ܘ ????????혒#???????????C?r?1O??rkMN4?SSSSS?=5? docs examples host-manager manager ROOT

如果遇到无法删除的情况,可以使用删除inode的方式来删除。

1
2
3
4
5
6
[root@slave2 ~]# ll -i
总用量 636
1710957 drwxr-xr-x 2 root root 4096 5月 26 2020 =
1706027 -rw-r--r-- 1 root root 0 7月 26 2019 =2018-11-01 04:00:00
1706031 -rw-r--r-- 1 root root 0 7月 26 2019 4
1703945 -rw-------. 1 root root 0 10月 13 2016 anaconda-ks.cfg

前面的数字就代表该文件的inode。使用如下命令删除:

1
find -inum 1710957 -exec rm -rf {} \;

当然,还有一个办法就是使用SFTP登录到服务器上,然后在SFTP客户端中删除。