我正在尝试对inode进行一些计算(获取它们的大小等...) 我在网上找到的只是如何获取某个文件或目录的inode,但我想通过一次调用得到所有的inode,然后逐个使用它们有什么想法?
由于
答案 0 :(得分:0)
这个怎么样?
import os
inodes = os.popen("sudo ls -Rli / | awk '{ print $1 }'").read().split('\n')
inodes = [int(i) for i in inodes if i.isnumeric()]
对于我的主文件夹,这将返回一个inode编号列表:
[11666512, 10223622, 10234894, 10223641, 10223637, 10617011, 10254828, 10249545, 10223642, 10223643, 10487015, 10223640, 11929556, 10223639, 10223644, 10486989]
为了澄清,ls
命令采用三个标记参数R
,l
和i
。 R
执行递归搜索以检查文件夹中的所有文件以及以/
开头的所有子文件夹,l
格式化输出以向我们提供列表,i
为我们提供索引节点。我们将结果传递给awk以获取包含inode的第一列,然后对该数据进行一些简单的清理。
答案 1 :(得分:0)
您可以使用Python3中的scandir函数枚举所有inode。
public class FiatCurrencyGroupMap : ClassMap<FiatCurrencyGroup>
{
public FiatCurrencyGroupMap()
{
Id(x => x.Id);
HasMany<Denomination>(x => x.Denominations)
.Cascade.All();
}
}
os.walk返回所有目录。
os.scandir返回每个目录中的所有条目。
如果要获取起始目录的索引节点,则必须使用os.stat进行。