通过inode获取文件详细信息

4

当我知道inode时,我需要在bash脚本中获取有关文件的详细信息。系统为Linux。

3个回答

9

如果你只使用ext2/3文件系统,你可以使用debugfs来查找inode对应的文件,这比在有大量文件的大型文件系统中使用find命令快得多。

debugfs -R "ncheck $inode" /dev/device 2> /dev/null | tail -1 | awk '{print $2}'

不过,就我所知,Find仍然是最好的选择,因为它不依赖于文件系统。


1
好主意,但我认为仍需要使用暴力方法,并且您没有缩小路径的奢侈品。我的系统使用debugfs定位inode所需的时间与使用find相同。 - JimB
点赞这个信息。然而,在我的ext4根分区上,有181,558个inode(并不是真正的“大型”),sudo find / -mount -inum $isudo debugfs -R "ncheck $i" /dev/sda1 一直更快(约为0.28秒对比0.52秒)。有没有人可以测试一下这个命令在一个大文件系统中的表现? - netvope
你在测试之前清空了缓存吗? sync; sync; echo 3 > /proc/sys/vm/drop_caches - Steve Baker

6

类似以下内容:

find $SEARCHPATH -maxdepth $N -inum $INUM -exec ls -l {} \;

由于文件名链接到inode,而不是反过来,因此您需要以蛮力的方式进行操作。如果您有一些想法可以缩小范围,可以使用-maxdepth。如果您正在搜索包含多个文件系统的树,则还可以添加-xdev。


0

您可以使用find命令结合 -inum-xdev 来查找文件。这将给出文件的名称(一个文件可能有多个名称),并且您可以从中获取任何所需的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接