当我知道inode时,我需要在bash脚本中获取有关文件的详细信息。系统为Linux。
如果你只使用ext2/3文件系统,你可以使用debugfs来查找inode对应的文件,这比在有大量文件的大型文件系统中使用find命令快得多。
debugfs -R "ncheck $inode" /dev/device 2> /dev/null | tail -1 | awk '{print $2}'
不过,就我所知,Find仍然是最好的选择,因为它不依赖于文件系统。
类似以下内容:
find $SEARCHPATH -maxdepth $N -inum $INUM -exec ls -l {} \;
由于文件名链接到inode,而不是反过来,因此您需要以蛮力的方式进行操作。如果您有一些想法可以缩小范围,可以使用-maxdepth。如果您正在搜索包含多个文件系统的树,则还可以添加-xdev。
您可以使用find
命令结合 -inum
和 -xdev
来查找文件。这将给出文件的名称(一个文件可能有多个名称),并且您可以从中获取任何所需的信息。
sudo find / -mount -inum $i
比sudo debugfs -R "ncheck $i" /dev/sda1
一直更快(约为0.28秒对比0.52秒)。有没有人可以测试一下这个命令在一个大文件系统中的表现? - netvopesync; sync; echo 3 > /proc/sys/vm/drop_caches
- Steve Baker