liên kết tượng trưng: tìm tất cả các tệp liên kết đến tệp này


Câu trả lời:


132

Nó phụ thuộc, nếu bạn đang cố gắng tìm các liên kết đến một tệp cụ thể được gọi foo.txt,thì đây là cách tốt duy nhất:

find -L / -samefile path/to/foo.txt

Mặt khác, nếu bạn chỉ đang cố gắng tìm các liên kết đến bất kỳ tệp nào tình cờ được đặt tên foo.txt, thì một cái gì đó như

find / -lname foo.txt

hoặc là

find . -lname \*foo.txt # ignore leading pathname components

vấn đề được giải quyết tốt đẹp. Cảm ơn tất cả những người đã trả lời.
lukmac,

8
Như tôi đã nhận xét về một câu trả lời đã bị xóa, bạn có thể sử dụng -xtype lđể chỉ tìm các liên kết tượng trưng trong danh sách
Hasturkun,

bạn có thể muốn đệ quy, vì bản thân bất kỳ tệp nào trỏ đến foo.txt có thể được trỏ tới bởi một số liên kết khác ... ví dụ: A-> B-> foo.txt, / tmp / C-> B-> foo.txt vv
Olivier Dulac

điều này cũng có thể hoạt động nếu thành phần tên của bạn là thư mục mẹ có tên trong liên kết, bằng cách tìm kiếm find . -lname '*foo.dir*'(đối sánh với ví dụ file.txt -> ../foo.dir/file.txt:)
Yonatan

22

Tìm số inode của tệp và sau đó tìm kiếm tất cả các tệp có cùng số inode:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

Ngoài ra, hãy thử lnametùy chọn find, nhưng điều này sẽ không hoạt động nếu bạn có các liên kết tượng trưng tương đối, ví dụ:a -> ../foo.txt

$ find . -lname /path/to/foo.txt

3
Nếu sử dụng phiên bản gần đây của GNU find, bạn cũng có thể sử dụng -samefiletùy chọn với -Lhiệu ứng tương tự mà không cần phải tự mình tra cứu inode
Hasturkun,

5
Nhưng điều này cũng sẽ tìm thấy các tệp trên các hệ thống tệp khác có cùng số inode.
DigitalRoss

Nếu foolà một thư mục, sử dụng ln -di, trong một dòng:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77

1
Câu trả lời này là sai. Một liên kết biểu tượng không có cùng inode như mục tiêu của nó. Điều này sẽ chỉ hoạt động đối với một tệp bên trong một thư mục được liên kết tượng trưng. Nhưng đây không phải là những gì đã được hỏi.
Jules Lamur

4

Tôi thích sử dụng symlinkstiện ích này, tiện ích này cũng rất tiện lợi khi tìm kiếm các liên kết tượng trưng bị hỏng. Cài đặt bởi:

sudo apt install symlinks

Hiển thị tất cả các liên kết tượng trưng trong thư mục hiện tại và các thư mục con:

symlinks -rv .
  • -r: đệ quy
  • -v: verbose (hiển thị tất cả các liên kết tượng trưng, ​​không chỉ những liên kết bị hỏng)

Để tìm một liên kết biểu tượng cụ thể, chỉ cần grep:

symlinks -rv . | grep foo.txt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.