Hallo tất cả, tôi cần làm điều này trong linux:
- Đã cho: tên tệp 'foo.txt'
- Tìm: tất cả các tệp là liên kết tượng trưng đến 'foo.txt'
Làm thế nào để làm nó? Cảm ơn!
Hallo tất cả, tôi cần làm điều này trong linux:
Làm thế nào để làm nó? Cảm ơn!
Câu trả lời:
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
-xtype lđể chỉ tìm các liên kết tượng trưng trong danh sách
find . -lname '*foo.dir*'(đối sánh với ví dụ file.txt -> ../foo.dir/file.txt:)
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
-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
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)
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