problem rozwiązany pięknie. Dziękuję wszystkim, którzy odpowiedzieli.
lukmac
8
Jak skomentowałem usuniętą odpowiedź, możesz użyć, -xtype laby znaleźć tylko listę linków symbolicznych
Hasturkun
możesz chcieć powtórzyć, ponieważ każdy z plików wskazujących na foo.txt może być wskazany przez inne linki ... np .: A-> B-> foo.txt, / tmp / C-> B-> foo.txt, itp.
Olivier Dulac,
to też może zadziałać, jeśli komponent nazwy jest katalogiem nadrzędnym wymienionym w linku, wyszukując find . -lname '*foo.dir*'(pasuje np. file.txt -> ../foo.dir/file.txt)
Yonatan
22
Znajdź numer i-węzła pliku, a następnie wyszukaj wszystkie pliki o tym samym numerze i-węzła:
Jeśli używasz najnowszej wersji GNU find, możesz również użyć -samefileopcji z -Ldla tego samego efektu, bez konieczności samodzielnego wyszukiwania i-węzła
Hasturkun
5
Ale spowoduje to również znalezienie plików w innych systemach plików, które mają ten sam numer i-węzła.
DigitalRoss
Jeśli foojest to katalog, użyj ln -diw jednej linii:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77
1
Ta odpowiedź jest błędna. Dowiązanie symboliczne nie ma tego samego i-węzła, co jego cel. Będzie to działać tylko dla pliku znajdującego się w folderze z dowiązaniem symbolicznym. Ale nie o to pytano.
Jules Lamur,
4
Wolę używać symlinksnarzędzia, które jest również przydatne podczas wyszukiwania uszkodzonych linków symbolicznych. Zainstaluj przez:
sudo apt install symlinks
Pokaż wszystkie linki symboliczne w bieżącym folderze i podfolderach:
symlinks -rv .
-r: rekurencyjny
-v: verbose (pokaż wszystkie linki symboliczne, nie tylko uszkodzone)
Aby znaleźć określone łącze symboliczne, wystarczy grep:
Odpowiedzi:
To zależy, jeśli próbujesz znaleźć linki do określonego pliku, który jest wywoływany,
foo.txt,
jest to jedyny dobry sposób:Z drugiej strony, jeśli po prostu próbujesz znaleźć linki do dowolnego pliku, który ma nazwę
foo.txt
, to coś w rodzajulub
źródło
-xtype l
aby znaleźć tylko listę linków symbolicznychfind . -lname '*foo.dir*'
(pasuje np.file.txt -> ../foo.dir/file.txt
)Znajdź numer i-węzła pliku, a następnie wyszukaj wszystkie pliki o tym samym numerze i-węzła:
Alternatywnie wypróbuj
lname
opcjęfind
, ale to nie zadziała, jeśli masz względne linki symboliczne, npa -> ../foo.txt
źródło
-samefile
opcji z-L
dla tego samego efektu, bez konieczności samodzielnego wyszukiwania i-węzłafoo
jest to katalog, użyjln -di
w jednej linii:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
Wolę używać
symlinks
narzędzia, które jest również przydatne podczas wyszukiwania uszkodzonych linków symbolicznych. Zainstaluj przez:Pokaż wszystkie linki symboliczne w bieżącym folderze i podfolderach:
-r
: rekurencyjny-v
: verbose (pokaż wszystkie linki symboliczne, nie tylko uszkodzone)Aby znaleźć określone łącze symboliczne, wystarczy
grep
:źródło