七叶笔记 » golang编程 » Linux下删除文件名具有特殊符号de的文件

Linux下删除文件名具有特殊符号de的文件

用xshell上传文件的时候,出现了乱码,并在工作目录下出现了一个名字具有特殊符号的文件:

‘؞’$’\262\270\242”b’$’\233”@}’$’\352\361\361\317”L2w’$’\320\305”c’

直接用rm删除,结果如下

删除文件失败

首先了解一下Linux的文件系统,Linux的文件中有一个重要的数据结构,inode

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。同时,每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

so,直接删除inode就可以删除这个文件了

使用 ls -i 命令找到文件的inode号码

使用 find ./ -inum inodenumber -exec rm ‘{}’ \; 删除节点,文件也就被删除了

查看结果,文件已经被删除

相关文章