使用文件的inode号码删除无法打出名字的文件
目录
在操作 UNIX和Linux系统时,偶尔由于误操作等会出现一些无法打出文件名(例如文件名包含非法字符)的文件,由于无法打出名字,所以不容易使用 rm
命令将其删除。
解决方案
这是我们可以使用文件的inode号码将其删除,具体操作如下:
- 找到文件的inode号码
使用 ls -i 命令查看文件的inode号码。例如:
ls -i
输出结果会显示文件的inode号码,例如:
1234567 文件名
- 使用inode号码删除文件
使用 find 命令和inode号码删除文件。例如:
find . -inum 1234567 -delete
原理
在UNIX和Linux文件系统中,inode(索引节点)是一个数据结构,用于存储文件的元数据。每个文件和目录在文件系统中都有一个唯一的inode。 当 unix 创建文件时,unix 做了两件事。
- Unix 在存储设备上保留一块空间用来存储数据。
- Unix 创建一个**索引节点(index node)**或 **i 节点(i-node)**的结构。用来存放文件的基本信息(包括步骤1中指向存储数据空间的指针)。
inode的组成部分
具体来讲,inode包含了文件的以下信息:
- 文件类型:如普通文件、目录、符号链接等。
- 文件权限:包括读、写、执行权限。
- 文件所有者(用户ID)。
- 文件所属组(组ID)。
- 文件大小。
- 文件的时间戳:
- 创建时间(ctime)
- 最后一次修改时间(mtime)
- 最后一次访问时间(atime)
- 链接计数:硬链接到该文件的数量。
- 指向数据块的指针:存储文件内容的数据块的地址。
inode不包含的信息:
inode不包含文件名信息。文件名与inode号码之间的映射由目录项(directory entry)来维护。每个目录项将一个文件名映射到一个inode号码。
inode的作用
- 文件系统结构:inode提供了一种高效的方式来管理文件系统中的文件和目录。通过inode,文件系统可以快速地找到文件的元数据和实际内容。
- 权限和所有权管理:inode存储了文件的权限和所有权信息,确保文件系统的安全性和访问控制。
- 文件操作:当执行文件操作时,如打开、读取、写入文件,操作系统通过inode来访问和修改文件的数据和元信息。
查看inode信息
在Linux系统中,可以使用以下命令查看文件的inode信息:
查看文件的inode号码
ls -i 文件名
# eg:
ls -i example.txt
# 输出示例:
1234567 example.txt
详细查看文件的元数据
stat 文件名
# eg:
stat example.txt
#输出示例:
File: example.txt
Size: 1234 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 1234567 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ username) Gid: ( 1000/ group)
Access: 2024-07-05 12:34:56.000000000 +0000
Modify: 2024-07-04 11:33:55.000000000 +0000
Change: 2024-07-03 10:32:54.000000000 +0000
Birth: -