Znajdowanie wszystkich dowiązań symbolicznych i stałych do pliku w systemie UNIX


9

Jeśli mam określony plik w systemie plików UNIX, czy istnieje sposób, aby użyć bash do znalezienia wszystkich łączy do tego pliku, zarówno symbolicznych, jak i trudnych? Jeśli potrzebuję różnych poleceń dla każdego, jakie one są?

Odpowiedzi:


8

Wypróbuj to z GNU find:

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

Przykładowe dane wyjściowe:

1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1

Możesz użyć -lszamiast, -execale pokaże i-węzeł i inne informacje pliku docelowego zamiast poszczególnych plików.


Ten wynik pokazuje twarde i sym linki? Łącza Sym oznaczone przez -> strzałkę?
aaaidan

@aaaidan: Tak, zgadza się. Liczba i-węzłów x1 i x2 są takie same, co wskazuje, że są to twarde łącza. Strzałka wskazuje dowiązanie symboliczne. Używanie -Li -samefilepowoduje, że oba są na liście. W przypadku pominięcia -Lłącza symboliczne nie są przestrzegane (patrz man find).
Wstrzymano do odwołania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.