目录

使用文件的inode号码删除无法打出名字的文件

在操作 UNIX和Linux系统时,偶尔由于误操作等会出现一些无法打出文件名(例如文件名包含非法字符)的文件,由于无法打出名字,所以不容易使用 rm 命令将其删除。

这是我们可以使用文件的inode号码将其删除,具体操作如下:

  1. 找到文件的inode号码

使用 ls -i 命令查看文件的inode号码。例如:

sh

ls -i

输出结果会显示文件的inode号码,例如:

sh

1234567 文件名
  1. 使用inode号码删除文件

使用 find 命令和inode号码删除文件。例如:

sh

find . -inum 1234567 -delete

在UNIX和Linux文件系统中,inode(索引节点)是一个数据结构,用于存储文件的元数据。每个文件和目录在文件系统中都有一个唯一的inode。 当 unix 创建文件时,unix 做了两件事。

  1. Unix 在存储设备上保留一块空间用来存储数据。
  2. Unix 创建一个**索引节点(index node)**或 **i 节点(i-node)**的结构。用来存放文件的基本信息(包括步骤1中指向存储数据空间的指针)。

具体来讲,inode包含了文件的以下信息:

  • 文件类型:如普通文件、目录、符号链接等。
  • 文件权限:包括读、写、执行权限。
  • 文件所有者(用户ID)。
  • 文件所属组(组ID)。
  • 文件大小。
  • 文件的时间戳:
  • 创建时间(ctime)
  • 最后一次修改时间(mtime)
  • 最后一次访问时间(atime)
  • 链接计数:硬链接到该文件的数量。
  • 指向数据块的指针:存储文件内容的数据块的地址。

inode不包含文件名信息。文件名与inode号码之间的映射由目录项(directory entry)来维护。每个目录项将一个文件名映射到一个inode号码。

  • 文件系统结构:inode提供了一种高效的方式来管理文件系统中的文件和目录。通过inode,文件系统可以快速地找到文件的元数据和实际内容。
  • 权限和所有权管理:inode存储了文件的权限和所有权信息,确保文件系统的安全性和访问控制。
  • 文件操作:当执行文件操作时,如打开、读取、写入文件,操作系统通过inode来访问和修改文件的数据和元信息。

在Linux系统中,可以使用以下命令查看文件的inode信息:

查看文件的inode号码

sh

ls -i 文件名

# eg:
ls -i example.txt

# 输出示例:
1234567 example.txt

详细查看文件的元数据

sh

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: -