Como encontrar todos os arquivos que são basicamente as ligações macios ou duros de outros diretórios ou arquivos no linux?
Pergunta
Como eu poderia obter a lista de todos os arquivos vinculados no meu sistema ou de um determinado diretório. I utilizado para criar links, mas eles se tornaram incontroláveis ??com o tempo. Eu quero a lista de todos esses links de um diretório. Alguém pode ajudar?
Solução
links simbólicos conclusão é fácil:
% find . -type l
Encontrar links de disco rígido é complicado, porque se um subdiretório do diretório em questão também tem subdiretórios então aqueles aumentar a contagem de hard link. Isso é como subdiretórios estão ligados a seus pais em UNIX (que é a entrada ..
em cada subdiretório).
Se você só quer encontrar ligados arquivos (e não diretórios), isso vai funcionar:
% find . -type f \! -links 1
Isso funciona porque um arquivo que faz tem ligações fortes terá uma contagem link> 1, e arquivo desvinculado tem um link contagem == 1, daí este comando procura todos os arquivos cujos ligação contagem < > 1
Como alternativa, em versões mais recentes do find
você poderia usar:
% find . -type f -links +1
Isso funciona pela mesma razão que acima; No entanto, versões mais recentes do achado pode levar + n ou -n, em vez de apenas um número. Isto é equivalente a testar para n maior do que ou menor do que n, respectivamente.
Outras dicas
find / -xdev -samefile filename
@OP, Se você tem GNU achado, você pode encontrar links rígidos usando -printf "%n"
,
por exemplo.
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
Veja por exemplo aqui
https://www.gnu.org/software/findutils /manual/html_node/find_html/Hard-Links.html
ou combinar Alnitak e resposta amber_linux em
find -L /where/to/search -samefile /some/link/to/file
para encontrar todos os links duros e macios para um determinado arquivo.