如何找到任意目录的索引节点?

如何找到任意目录的索引节点?

我在谷歌上几乎找不到任何可以帮助我回答这个问题的东西。我认为它正在将其他一些参数传递给ls -i?

答案1

是的,参数 -i 将打印 ls 命令列出的每个文件或目录的索引节点号。当您想打印目录的索引节点号时,我建议使用参数 -d 仅列出目录。要打印目录 /path/to/dir 的 inode 编号,请使用以下命令行:

ls -id /path/to/dir

man ls

   -d, --directory
          list  directory entries instead of contents, and do not derefer‐
          ence symbolic links
   -i, --inode
          print the index number of each file

答案2

这也适用于 stat:

DIR=/
stat -c '%i' $DIR

man stat:

   -c  --format=FORMAT
          use the specified FORMAT instead of the default; output  a  new‐
          line after each use of FORMAT
[...]

   The valid format sequences for files:    
       %i     inode number

答案3

-i您可以使用选项找到文件和目录的索引节点

ls -id /home/user/dir

您可以获取系统消耗的inode信息

df -hi

答案4

在 C++ 中:

#include <sys/stat.h>

ulong getInode( const QString &path )
{
        struct stat st;
        stat( path.toUtf8(), &st );
        return st.st_ino;
}

这应该适用于文件和文件夹。

相关内容