On Feb 26, 2005, at 1:55 pm, Robert Tillyard wrote: > > Here is some 'C' code that I have used to find the i-node, just copy > it to a file with a .c extension such as inode.c then type make inode > and then run ./inode <path> from the terminal. > > #include <stdio.h> > #include <dirent.h> > > static int doDirectory (char *); > > int main (int argc, char **argv) > { > int i; > > if (argc == 1) > return (doDirectory (".")); > > for (i = 1; i < argc; i ++) > doDirectory (argv [i]); > > return (0); > } > > static int doDirectory (char *name) > { > struct dirent *dir; > DIR *dirp; > > if ((dirp = opendir (name)) == (DIR *) 0L) > { > perror (name); > return (-1); > } > > while (dir = readdir (dirp)) > { > printf ("%-30.30s ", dir->d_name); > > if (dir->d_ino == 0) > printf ("<deleted>\n"); > else > printf ("%lu\n", dir->d_ino); > > } > > closedir (dirp); > } C was the language I thought to do this in. Thanks for this code - I didn't get past the thinking-about-it stage because I've never done any file handling in C before (in my defence, I did complete a compiler project with C in uni). $ ./godir . 1041563 .. 224420 godir 1041568 godir.c 1041561 $ ./godir /Volumes/CLEARLIGHT/foo/legoland . 731381 .. 772975 eÌyÌyÌyÌvkââ..ââ 169384 Unfortunately, having found the inode number: $ find /Volumes/CLEARLIGHT/foo/legoland -inum 169384 find: /Volumes/CLEARLIGHT/foo/legoland/eÌyÌyÌyÌvkââ..ââ: File name too long $ find /Volumes/CLEARLIGHT/foo/legoland -inum 169384 -delete find: /Volumes/CLEARLIGHT/foo/legoland/eÌyÌyÌyÌvkââ..ââ: File name too long `-print0 | xargs` gives the same result. With the benefit of Mr Tilliard's code, I'm gonna have a crack at writing something to unlink $1. Stroller.