How to get directory inode number say /home/laks/file.txt I need the inode number of laks directory. Any built-in function is already available? I think i could use stat() if i cut the file name...but any other solution to this without removing file name.
A:
a=/home/laks/file.txt
dir=${a%/*}
set -- $(ls -ldi $dir)
echo $1
or if you want to recurse directory
find /path -type f -name "*.txt" -printf 'stat -c "%%n:%%i" "%h"\n' | sort -u |bash
ghostdog74
2010-01-28 06:18:18
thanks for your answer. Is it possible to do the same using C API ?
lakshmipathi
2010-01-28 06:26:27
sorry, missed out the programming language. Hope somebody can answer you soon.
ghostdog74
2010-01-28 06:28:30
Not your fault. I edited title only after your replied. So it's my mistake :)
lakshmipathi
2010-01-28 06:40:58
A:
#include <libgen.h>
#include <sys/stat.h>
...
struct stat statbuf;
if (stat(dirname(argv[1]), &statbuf) != -1)
process_inode_number(statbuf.st_ino);
Note that dirname()
may modify the string, so if you still need it, or if it may be a string literal (which is in read-only memory), then use strdup()
to make a copy of the string for dirname()
.
mark4o
2010-01-28 07:35:14
thanks I tried to run this way #include <libgen.h>#include <sys/stat.h>main(){struct stat statbuf;if (stat(dirname("/home/laks/file.txt"), }But it core dumps -- any thoughts
lakshmipathi
2010-01-28 07:41:47
If you are using a string literal then use strdup. i.e. `strdup("/home/laks/file.txt")`
mark4o
2010-01-28 07:44:12