Alliot's blog

Linux下利用inode号删除乱码文件

  Linux 由于与 Windows 的字符编码不同等原因,经常会遇到中文文件名乱码无法显示的情况,命令行下使用通常的 rm filename 的方法删除文件就不可行了,我们可以通过文件的 inode number 来对文件进行操作。

inode 是什么

  Wikipedia 对于 inode 的定义是:

inode是指在许多“类Unix文件系统”中的一种数据结构。每个inode保存了文件系统中的一个文件系统对象(包括文件、目录、设备文件、socket、管道, 等等)的元信息数据,但不包括数据内容或者文件名。

简单来说,每个文件都有一个独一无二的 inode,我们可以通过 inode 来定位一个文件。

显示文件 inode 号

1
ls -i  # ls 显示 inode number

ps: 显示文件的详细 inode 信息可以通过 stat filename 来显示,于本文无关,不讨论。

删除乱码文件

这里通过 find 来找到该文件,执行 rm 操作。(这里假设上一步找到的 inode number 为 123456 )

1
2
3
4
5
find . -inum 123456 | xargs rm -f # -f 表示强制删除,如果出现 rm : missing operand 可以加上该参数  
# 或者是:
find . -inum 123456 -delete
# 或者是:
find . -inum 123456 -exec rm -rf {} \;

------ 本文结束 ------

本文标题:Linux下利用inode号删除乱码文件

文章作者:Alliot

发布时间:2019年09月01日 - 10:09

最后更新:2023年05月21日 - 00:05

原始链接:https://www.iots.vip/post/use-inode-delete-file.html

许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 转载请保留原文链接及作者。

若文章为您解决燃眉之急或是带来些许明朗,不妨打赏 Alliot 一杯香茗或是一杯咖啡