【Linux】使用Inode号删除文件

admin / Linux / / 307 字 · 约 2 分钟 / 501 次阅读 /

一、背景与问题

在 Linux 文件管理中,有时会遇到带有特殊字符、隐藏乱码或空格的文件名(例如包含控制字符或 hello world 文件名),导致执行普通 rm 命令时报错或无法定位目标。

此时可以利用文件系统底层的 inode 编号 直接定位并安全清理。

二、查看文件的 inode 编号

通过 ls -il 选项可以在第一列输出文件的 inode 索引编号:

[root@thexqf ~]# ls -il
total 244692
 25993 -rw-------. 1 root root      1316 May 14  2018 anaconda-ks.cfg

在上面的输出中,anaconda-ks.cfg 的 inode 编号为 25993

三、根据 inode 号执行删除

方法 1:使用 find 命令的 -delete 或 -exec 选项

find . -inum 25993 -exec rm -f {} \;

方法 2:结合 xargs 删除

find . -inum 25993 | xargs rm -f

对于无法输入名字的文件,也可以根据 inode 重命名:

find . -inum 25993 -exec mv {} normal_name.txt \;
admin

admin

云原生架构 · 全栈开发

感谢阅读本文!记录系统架构思考与实战复盘。专注于 Python、Django、PostgreSQL 与云原生容器化工程实践。