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ử lname
tù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
-samefile
tùy chọn với -L
hiệu ứng tương tự mà không cần phải tự mình tra cứu inode
foo
là 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 symlinks
tiệ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