Como encontrar todos os arquivos que são basicamente as ligações macios ou duros de outros diretórios ou arquivos no linux?

StackOverflow https://stackoverflow.com/questions/1810334

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top