Как перечислить файлы и их inode числа в текущем каталоге?

Как я могу получить список объектов и их inode чисел в текущем рабочем каталоге?

2
задан 10 September 2018 в 03:09

2 ответа

ls имеет -i флаг:

$ ls -i
1054235 a.out  1094297 filename.txt

Но если вы чувствуете себя авантюрным, постройте ls -i самостоятельно:

#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <limits.h>

void print_dirents(DIR * dir){
    struct dirent *entry;
    while ( (entry=readdir(dir)) != NULL ){
        printf("%s,%d\n",entry->d_name,entry->d_ino);
    }
}

int main(){

    char current_dir[PATH_MAX];
    DIR *cwd_p;

    if (  getcwd(current_dir,sizeof(current_dir)) != NULL){
        cwd_p = opendir(current_dir);
        print_dirents(cwd_p);
        closedir(cwd_p);
    } else {
        perror("NULL pointer returned from getcwd()");
    }

return 0;
}

И это работает так: [ 118]

$ gcc lsi.c && ./a.out
filename.txt,1094297
a.out,1054235
..,1068492
.,1122721
lsi.c,1094294
3
ответ дан 2 December 2019 в 01:53
stat ./*

или

man stat; stat --format=*f* ./*
3
ответ дан 2 December 2019 в 01:53

Другие вопросы по тегам:

Похожие вопросы: