¿Enumerar todos los archivos con el mismo número de inodo?

53

Digamos que cuando hago ls -lidentro de un directorio, obtengo esto:

12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt

Como muestra la salida, el archivo fun.txt tiene 6 enlaces duros; y el número de inodo es 12353538 .

Dado el caso, ¿cómo encuentro todos los enlaces duros para el archivo, es decir, archivos con el mismo número de inodo?

soy yo
fuente

Respuestas:

56
find /mount/point -samefile /mount/point/your/file
Hauke ​​Laging
fuente
3
@TheoneManis Acabo de notar que las otras partes de la llamada de búsqueda no son necesarias. findes lo suficientemente inteligente como para usarlos implícitamente. Por lo general, debe proporcionar finduna ruta de búsqueda y decirle que no debe abandonar estos sistemas de archivos (a través de enlaces simbólicos o puntos de montaje). Pero cuando se buscan enlaces duros, está claro en qué sistema de archivos buscar.
Hauke ​​Laging
66
Hauke, eso depende de la versión de find que estés usando. La versión GNU podría hacer eso, pero la versión BSD no lo hace, y esto no funcionará tal cual en Mac.
Alan Shutko el
3
Es posible que desee agregar -xdevpara evitar descender a directorios en otros sistemas de archivos, de lo contrario, puede encontrar otro archivo con el mismo número de inodo ubicado en otro sistema de archivos.
mmoya
El casi equivalente a -samefileen HP-UX es -linkedto(aunque es ligeramente diferente: una ruta de búsqueda todavía debe especificarse, por ejemplo).
Nick
3
Tenga en cuenta que si no está en la raíz de su punto de montaje, find solo explorará subcarpetas de la carpeta actual. Así que realmente deberías decir algo comofind /mount/point -samefile /mount/point/your/file
Calimo
52

Si ya tiene el número de inodo, puede usar la -inumopción find :

find -inum 12353538
scai
fuente
11
No olvides cd a la raíz del sistema de archivos, o especificarlo como una ruta para encontrar, como find /mount/point -inum 12353538. De lo contrario, find solo se verá debajo de la carpeta actual.
Calimo