Cómo encontrar todos los archivos que son, básicamente, blando o duro, enlaces a otros directorios o archivos en linux?
Pregunta
¿Cómo podría obtener la lista de todos los archivos vinculados en mi sistema o de un directorio determinado.He usado para crear enlaces pero se volvió inmanejable con el tiempo.Quiero la lista de todos los enlaces de un directorio.Alguien puede ayudar?
Solución
Encontrar enlaces simbólicos es fácil:
% find . -type l
Encontrar enlaces duros es complicado, porque si un subdirectorio del directorio en cuestión también tiene subdirectorios, a continuación, aquellos aumentar el enlace duro a contar.Que es como los subdirectorios están vinculados a sus padres en UNIX (es el ..
entrada en cada uno de los subdirectorios).
Si sólo desea buscar vinculados los archivos (y no los directorios), esto va a funcionar:
% find . -type f \! -links 1
Esto funciona debido a que un archivo que ¿ tiene enlaces duros tendrá un enlace count > 1, y desvinculado de archivo tiene un link count == 1, por lo tanto este comando busca todos los archivos cuyo enlace contar <> 1
Alternativamente, en las versiones más recientes de find
usted podría utilizar:
% find . -type f -links +1
Esto funciona por la misma razón que el anterior,sin embargo, las versiones más recientes de encontrar puede tomar +n o -n en lugar de sólo un número.Esto es equivalente a la prueba para mayores que n o menos de n, respectivamente.
Otros consejos
find / -xdev -samefile filename
@OP, Si usted tiene GNU encontrar, usted puede encontrar enlaces duros usando -printf "%n"
,
por ejemplo,
find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
# if 2 or more files have the same inode number, then they are hard links.
# you can therefore count how many $inum that are the same and determine those hard links, which
# you have to try doing yourself.
done
Ver, por ejemplo,aquí
https://www.gnu.org/software/findutils/manual/html_node/find_html/Hard-Links.html
o combinar Alnitak y amber_linux respuesta en
find -L /where/to/search -samefile /some/link/to/file
encontrar todos los enlaces duros y suaves para un archivo dado.